Added a Diffable impl for any Traverse.

This means … no more boilerplate!

Although there are still cases where you might want a non-default impl
and I need to work on making that more minimal when you need it.