Improve handling of types in the AST and query compiler.

- Add an option to fill in missing types without retyping everything in
  Node.nodeWithComputedChildren.

- Add nominal types for Tables and Pure nodes. All types get a structural
  expansion. The identity of these types is defined by a TypeSymbol. The
  inferTypes phase computes the correct table types with all required
  columns.

- Define utility functions such as mapChildren() and select() directly in
  the Type trait.

- Unify methods for transformations with and without keeping type
  information.

- Add -Dscala.slick.ansiDump=true to enable ANSI colors in AST dumps to
  make them more readable with all the verbose type information.

- Add -Dscala.slick.dumpPaths=true to show children of paths in AST dumps
  (so you can see their type information).
Implement SQL-like count(*) semantics workaround in QueryInterpreter.

This makes interpreted aggregations behave the same way as compiled
ones after 46bd56851db69530c09d48c2fd232378fef9939a.

No new test (AggregationTest.testGroupBy was broken on MemoryDriver).
Remove "by" Symbol from GroupBy.

This fixes #141 properly, replacing the binary-compatible workaround from
511cb76063fcac2c8834d94e87de550b62789954.
Some minor cleanup work
Simplify typing of Nodes.

Half of the Node implementations can be a SimplyTypedNode which greatly
reduces the boilerplate. The other half at least benefits from a split
of nodeWithComputedType into nodeWithComputedType (which is final)
and the abstract nodeWithComputedType2 that they have to implement.

The new Node.nodeRebuildOrThis helps with the individual implementations
of nodeWithComputedType2.
Merge pull request #165 from slick/tmp/nominal-types

Add support for nominal types