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.
Merge pull request #884 from cvogt/tmp/extensibleReverseEngineering

enhance reverse engineering
Add a test for Array[Byte] literals.

This is not currently supported by any of the core drivers but it is
supported by SQLServerDriver in Slick Extensions.

Related to #211.
Improve reverse engineer to work with slick-extensions
- support for Char and BigDecimal
caveats:
- Boolean mapping still flawed
- DBType mapping still flawed and non-portable
Merge pull request #896 from slick/tmp/issue-211

Add a test for Array[Byte] literals.
Merge pull request #898 from slick/tmp/extensibleReverseEngineeringfixes

Improve reverse engineering to work with slick-extensions
Prepare model for binary compatibility with potential future extension
Add Float support to ModelBuilder / Fix MetaModelTest for jtds
Merge pull request #899 from slick/tmp/reverseEngineeringFuturePreparation

Prepare model for binary compatibility with potential future extension
Merge pull request #901 from slick/tmp/fixJdts

Add Float support to ModelBuilder / Fix MetaModelTest for jtds
Merge branch 'tmp/master' into tmp/selectdistinct

Conflicts:
	src/main/scala/scala/slick/compiler/Relational.scala