Add tests for definition methods/routes and fix revealed bugs
DRY up the definition code

Introduce a 'definition' method with a verbose "overloaded" signature
and have other methods call that.