Rename Innodb::Field::type to Innodb::Field::field_type to avoid
confusion with Ruby's built-in method of the same name.
A field type is a data type. Rename FieldType to DataType to reflect
this distinction.
Nullability is a property of the field, not of the data type.
Move reading of the external reference field to the Field class.

Whether the field data is stored externally is not necessarily
associated with the data type.
Separate reading the field raw data from reading the data value.
Signedness is a property of data types representing numbers.
Fold length into each data type as the maximum width of the data type.
Make variable and blob a property of each data type.
Make name a property of each individual data type.
Fold the data type reader into the data type classes.
Move parsing of the field definition to the Field class.
Separate field name from type name. Also, fold the field and data
type names into their respective classes.
Move helper methods variable? and blob? to the Field class.

The methods are now implemented by checking the class of the data
type. Also, eliminate the now unneeded class AbstractType.
Handle an optional width specification for the CHAR data type.
Ensure that a width is specified for VARCHAR.
Add support for numeric types: BIT, FLOAT, DOUBLE and DECIMAL.