Introduce @FieldMap.

The existing version was very broken. This standardizes behavior under a new annotation which defines how it applies to the request body.