A new take on type providers

This implements code-generation based type providers with a string-generating backend. It is based on a generic foundation (AbstractGenerator), which can also be used to generate trees (which is not part of this PR but can be found here: https://github.com/slick/slick/tree/tmp/type-providers-tree-based). It also implements a customizable code generator, which we could make part of our public API at some point as a cool feature for our users (which has big potential in my eyes).

The Build.scala still needs refactoring, but the rest is ready for review.