Thanks very much kmdreko for your detailed response @kmdreko.
After trying to implement diesel::delete generically, I decided to give up on this approach - it's too much work trying to correctly specify all the trait bounds.
In the end what I decided to do is to move all generic portions of the Table trait into a supertrait called GenericTable. Then, I wrote a macro to implement all the functions in GenericTable along the lines that @Ross Rogers suggested.