Update type system to get types from Type classes

This is a fairly big update for the type system. It allows the type
classes themselves to set the column type that is used for table
migrations (creating and updating the tables) instead of relying solely
on a mapping in the adapters. This allows user-land custom types where
they were not possible before without adding an entry to the mappings
inside all the specific database adapters. Now users can register custom
type handlers and specify what actual column types they will use without
any further modifications to Spot. This is a big step in giving the type
system more control and power over how the type is stored.

 * Add 'Text' type
 * Add 'adapterOptions' method to allow Type class to set type and
   options array for adapter migrations (length, etc.)
 * Add for custom serialized type that stores as TEXT
Add test demonstrating ability of custom JSON type

 * Add test coverage for 'serialized' type already present
Merge branch 'type_mapping'