Add new ColumnOption Length for string columns

Mutually exclusive with existing DBType (ensured by exception)
Setting Length leads to using CHAR or VARCHAR with appropriate length in DDL.
Enhance model reverse engineering

Refactor meta.createModel into meta.ModelBuilder with driver specific subclasses for loads of hooks into how the model is built. This is mainly useful to abstract over jdbc driver differences and give users a way to make up for cases not covered by Slick out of the box that require the jdbc meta data, e.g. type mappings and default value generation.

Model now contains DBType and Length (they are only mutually exclusive in Table classes, not the model), but omits length from DBType.
By default, the code generator ignore DBType and uses Length, because it is portable between DBMS.
Default values for Strings on MySQL are now no longer ignored, but appear in the model.
Merge pull request #884 from cvogt/tmp/extensibleReverseEngineering

enhance reverse engineering