Improve new String operations introduced in #843.

- Fix substring
- Push string operations up to RelationalDriver
- Use default JDBC escape functions in JdbcStatmentBuilderComponent
- Document the missing capabilities
- Support indexOf in DerbyDriver and SQLiteDriver
- Support reverse in AccessDriver
- Use proper Option-mapped Column types for all operations
- Simplify and speed up the tests
Add scaladoc link checker and fix the currently broken links
Merge pull request #886 from slick/tmp/sdlc

Add scaladoc link checker and fix the currently broken links
Update custom shape docs.

Supersedes #692 now that we ship CaseClassShape directly in Slick.
Merge pull request #885 from slick/tmp/case-class-shape-docs

Update custom shape docs.
Merge pull request #879 from slick/tmp/improve-string-ops

Improve new String operations introduced in #843.
Move code generator into its own subproject

This makes it easy to define different binary compatibility policies
for the code generator (which is only used at compile-time) and the
rest of Slick. The new policy is clarified in the manual and links are
provided to all four scaladoc bundles (slick, slick-testkit,
slick-codegen, slick-extensions).
Merge pull request #869 from slick/tmp/modularize-codegen

Move code generator into its own subproject
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.