Split Type.normalize() responsibilities into normalize() and from_sql()

Previously `normalize()` was used to convert values set by the model API
consumer and values received from the database. These are two
orthogonal uses.

The commit does not change behaviour since the `from_sql()` method uses
the `normalize()` implementation.
Add Type.to_sql() and simplify model code

Instead of encoding the conversion behaviour in the model class (via
the `_bytes_keys` attribute) we define it on the type. This gives us
a more extensible interface and separates logic.

This should not change any behaviour (as one can see by closely staring
at the code).
Minor simplifications in Model class
Use item[field] instead of getattr(item, field)
DateType inherits from Float type
Do not use abstract base class instance

We want to move common code into the base class with out changing the
behaviour of the default type.
Unify similar code from Type subclasses in base class

Instead of implementing the `parse()` and `format()` methods and
setting the `null` attribute in subclasses, we set the `model_type`
field and the generic implementations of the two methods take care of
the rest.

Again: No change in behaviour!
Merge pull request #959 from geigerzaehler/dbcore-refactor

Refactor DBcore without changing behaviour
Miniscule tweaks for #959