Various lattice improvements.

Add model that demonstrates lattices.

Allow lattice 'sql' attribute to be multi-line in lattice, view and materialization.

Don't allow roll up distinct-count.

When generating SQL in JDBC adapter, translate $SUM0 as SUM.

Fix enumerator over single-column ArrayTable.

Document model for lattice, tile, measure.

Improve algorithm to look for tiles that match a query, to allow inexact matches.

Look for materialized tiles that can be rolled up before creating a tile that is an exact match for the query. If there is a tile that has the right dimensionality but the wrong measures, in the worst case create a new tile with the union of the measures. If there are multiple tiles that can be rolled up, choose the one with the fewest rows.

Add attribute "algorithmMaxMillis" to JSON lattice element, and improve documentation for JSON model.

Make class TileKey top-level.

Add AggregateCall.create, which can infer the type of the call before creating it. This allows us to make SqlSumEmptyIsZeroAggFunction a singleton, by removing its type argument.

Deprecate interface Aggregation; new code should use SqlAggFunction.