Boundary Shapefile import

This adds a model to store the city / region boundary configuration
settings, and a Celery task to construct boundaries from uploaded
shapefiles. The OTIIndicatorsConfig class has been updated to have
pointers to two Boundary objects which will be used as the city and
region boundaries.

This also refactors some of the DataSource code to make it more general,
and puts in place the foundations of a framework for dealing with
Problems associated with a particular DataSource.

Celery tasks have been slightly refactored so that they are still
auto-discoverable, while keeping code specific to different types of
DataSources (e.g. Shapefiles and GTFS feeds) in different files.
I think this may be better as its own custom, read-only field with an explicit argument passed to the field for what the ProblemClass should be called.

You could also forego requiring any argument for the problem class and require that a ProblemClass be an attribute of the view class -- similar to how a `Model` attribute is required on views and it's passed in the context to fields/serializer, also raising an error if this field is added but the attribute isn't set.

I'm just a little bit worried about the magic going