Field definition discovery.

Add some way to describe the field definitions to the API clients.
`size => 255` can be in both. I am not sure if exposing so many details about the data backend is secure or not.

Since these arrays are exposed as declared to the client, implementors can add as many fields and/or sections as they want. I only think that we ought to provide some sensible defaults for the basics.

In summary, I don't really care if we put it in both places. I think it should be (at least) in the form element.