Non-working commit of Emitter.  Need "type" in Type next.
Move base to be classes, extend in TypeDSL
Get inline struct working
Gut TypeDSL, replace with Type, use attribute to define types
Move validation down into Type
Remove half-working on_set event
Move validation and coercers to sub-type, remove other attributes
Fix all tests