Code generation experiments

Generating metadata about fields in a Goat object.

Attempting to work towards a solution where we decorate Goat file with
metadata that can be used by the application for any purpose.

The current goal is to use the metadata as a way to build values that
will be exposed to a property grid for editing. The hope is that the
property grid will only ever see properties that have been declared as
UI editable or read-only. This will let us hide useless properties from
UI classes.