Implement TypeDefinition

This splits off a few arguments from FieldDefinitions
into their own class (type name, size, attributes)

This will make implementing VARCHAR support with specific sizes
easier an can also be used to complete some of the todos for
the BLOB type size limits!
Add support for VARCHAR type in mysql & sqlite