Reproject shapefiles

This adds database triggers to reproject Boundary and Demographic shapefile data from the Django models as they are inserted / updated.

Based on a discussion with @CloudNiner , there is also a check added in celery to prevent people from uploading Shapefiles if there is no valid GTFS data. It would probably be better to handle this in Angular by disabling the upload buttons, but that wasn't simple enough to do in the time remaining on the card.
I think so -- this goes the opposite way from what you'd expect; it says that if a DemographicDataFeature is deleted, the corresponding reprojected row will get deleted from this table, which is what we want since these rows are managed outside the Django ORM.