Move validation to its own directory in prep for splitting
out the validation part of Type into a base type
Move array/hash/set/struct/type to mixins for inclusion
in multiple DSLs
Give the main type its own set of array/hash/set/structs
Move coercer and validator up to base
Move defaults and coercion to base type
Move call_proc to base
Move remainder of base features to base
Add back validation for required parameter