Refactor tile server into components

Now that our tile server is leaving the prototype phase, let's organize the code a bit. This should make it easier to add LRU caches, PNG optimization, etc. down the line. We can also work on multiple pieces at the same time without stepping on as many toes.

The server should be pretty stripped down. There are lots of things in `lib/`, which we could consider moving into a `lib/utils/` directory.

Tested against the Seattle parking demo data. Response coverage map and filter maps seem to work and are clickable.

/cc @hampelm