Changed some internals to improve performance

- new syntax to access flags
- check for _fields, instead of going through
  the schema getter
ammend
experimental tz correction
Merge: 25811
Refactoring of Datum / SmartType

Datum and SmartType are now seperate classes. An instance of Datum (or a
subclass) only represents a table row, while the SmartType defines the
Schema. It cuts away most of the overhead which is currently present for
creatings Datum instances. Unfortunately, it breaks the current API
which requires changing current SmartType definitions. While it makes
setting up object definitions a bit more complicated, it simplifies the
construct logically.
use new flag api for types
remove old flags api and make filters explicit callbacks
Select correct table based on SmartType not Datum
made generation of unique identifiers for caching more reasonable
micro optimization of Datum accessors
removed dead code
cache sql_name(table)
added not_null flag
Types can now generate code to decode from and encode to the data stored in sql
Merge branch 'fast' of /var/git/SyncDB into fast
Types can now generate code to decode from and encode to the data stored in sql
improved default value handling

1) defaults now automatically replace Sql.null on decode. this is
because mysql can't have default values on blob columns. this becomes a
problem when adding columns later, and data is null
2) properly overwrite Sql.null on insert with the default, if present
typo
also handle Sql.null and defaults on update
Conflict merge