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.
I'm confused about this. I understand the purpose of the function, but I don't understand the three checks to ```isMetro```, ```isCounty``` and ```isTract```.