Add regression test for grouping by 3 columns.

Related to issue #215.
Add hashCode() implementation to ProductValue.

Also optimize GroupBy implementation in QueryInterpreter to avoid
unnecessary copying of data.

Fixes issue #215 on MemoryDriver (regression test was failing).
Use fixed version numbers for fmpp's dependencies.

This requires disabling transitive dependencies and specifying all of
them manually with the version that would currently be resolved from
Maven Central. All dependencies are specified as version ranges in fmpp
which means that we don't get a reproducible build or the ability to
start the sbt project without an Internet connection unless we exclude
them and do it correctly.
Rename .elements to .iterator.

Scala did this in 2.8 and we should be compatible with the Scala
collections API where possible.

Fixes issue #136.
Allow identity (primary key auto-increment) types to be overridden.

PostgreSQL and Access require a special type / syntax for these types.
We now honor the O.DBType column option for custom SQL types in this
case.

Test in JdbcTypeTest.testOverrideIdentityType. Fixes issue #193.
Flatten nested ProductNodes in GroupBy keys.

Databases without tuple syntax obviously don't support tuples in
"group by" clauses, so we have to flatten them. We can safely do this
in the convertToComprehensions phase. It should not affect semantics
for databases that would support tuples in this case.

Test case in AggregateTest.testGroup3. Fixes issue #207.
Quote the table name correctly in InsertBuilder.

This was still using quoteIdentifier instead of quoteTableName so it
would not work with schema names.

Replaces #198 (which was targeting the old 1.0 branch).
Fuse simple mappings before resolving GroupBy.

This enables the use of multiple mapping steps for extracting
aggregated values from groups.

Test in AggregateTest.testMultiMapAggregates. Fixes issues #186, #187,
#189.
Algebra of sets completed. Operations: intersect and minus (Except) added