Combine shape end points; add metro

Previously, we had a request handler for tracts and a separate for counties. The map would then make separate calls and generally half the speed of future requests.

This adds a unified handler that will pass along all requested geo types (defaulting to tract, county, & metro). The JS was refactored to take advantage of a single geojson tile layer (including selecting proper style and putting tracts behind counties behind metros). Logic about which zoom level to stop showing census tracts was moved into the backend.
Added some better comments to both the `pickStyle` and `reZIndex` functions -- I *think* they answer your question, but lmk