Field definition discovery.

Add some way to describe the field definitions to the API clients.
We probably still need this test :P