Let client define query, selection, and styles

Use mongodb to cache layer definitions and optionally as a tile cache. Include all properties in the datasource output for UTF grids, so the Carto filters can act on them. Unneeded properties can be left out by specifying a select mapping.

Allow styles to filter on the geometry type, using syntax like
```
#localdata[GEOMETRY = Point] {
  ...
}
```
This lets us restrict markers to point geometries when we have mixed-geometry datasets.

/cc @hampelm