Add an interface for type objects to control Ruby => SQL

Adds the ability to save custom types, which type cast to non-primitive
ruby objects.
Remove checks against `column.type` in abstract adapter quoting

The intention is to eventually remove `column` from the arguments list
both for `quote` and for `type_cast` entirely. This is the first step
to that end.