Field definition discovery.

Add some way to describe the field definitions to the API clients.
Lets also add ``allowed_values`` for select lists.