Work in progress. The general idea is to have 3 levels of types:
1) What I am tentatively calling a StaticType. These are basic mappings between standard java types and basic sql types. They require no access to a Session nor SessionFactory to fulfill their contracts.
2) Scoped. This is mainly the current Type contract, except that these will be explicitly scoped to a TypeRegistry (which is part of the Configuration and SessionFactory). Users can provide overrides of these.
3) User types. Again, mainly the current user types contracts.