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 
It shouldn't. It was never async, but we were still using CPS as though it was. We should be in the same position here, and I don't think there's any danger of call stack issues.