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.
There's some formatting stuff in here that's not in line with our CFPB JS code style, but I think its easier for me to just pull request later and then you can see the changes for next time. 

Admittedly, I ignore the two space requirement in favor of four because its damned near impossible to switch between the two when working simultaneously in JS and Python.