Allow marking fields/instances as private
A private instance/field would be usable elsewhere in the spec, but not by user code that uses the compiled spec. This would be useful in a couple of cases:

* Fields that are parsed in multiple "steps": the raw data is first parsed using a simple type, then translated to a nicer representation using an instance (the field used for the first parsing step could be marked private)
* Value instances that are used to simplify some expressions in the spec, but aren't useful to spec users