[DO NOT MERGE] First sketch of an AbstractType

For issue #167

* Define AbstractType with some basic conversion to primitive form
* Include hooks for converting non-primitive teams via simple methods
* Define AnyType(AbstractType), that validates values of any primitive type
* Define SimpleValueType(AbstractType), that validates values of any simple (non-compound) primitive type