Field equality

Our general approach to this is to make everything public, and rely on our users to use things in the canonical way.

In theory, anything not exposed in the maestro-api project comes with an implied "here be dragons" warning. Anything imported from maestro-api should be safe. In practice, we don't do a good job of this: some things the users have needed were not always in the api project, and some things the users shouldn't touch (like the ability to create custom Field classes) are exposed in the api.