Add Boundary model and Shapefile Celery processing

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.
Add boundaries to config model, fix migrations

Django's auto-detection for migrations doesn't work very well across app
boundaries; I had to manually add the dependency on the relevant
datasource migration in order to get this migration to work.
Set is_processed=True on shapefile error.
Reference Problem class via serializer Meta class.
Merge branch 'feature/boundary-shapefile-import' into develop
Merge branch 'develop' of github.com:WorldBank-Transport/open-transit-indicators into develop
Remove link to admin interface
Inherit OTIUser from AbstractUser

Extend from AbstractUser, rather than AbstractBaseUser

We get all the default functionality of the
django.contrib.auth.models.User class without having to reimplement
anything. This makes it easy to add additional custom fields/methods
in the future.

NOTE: This commit requires a 'DROP DATABASE transit_indicators;'
and then a re-run of the provision script
Add permissions for API views

There are two new viewsets, which inherit from ModelViewSet
  - OTIAdminViewSet
  - OTIBaseViewSet

This allows the settings/configuration views to be read-only for regular
users, and editable by admin, which is defined as having
is_staff == True

Default permissions are full access for regular users,
must be authenticated