Add GCM registration IDs to Members

First step for eventually supporting associating Member instances with
their GCM registration IDs (essentially their Android devices)
Implement an endpoint for adding registration IDs to a member
Implement an endpoint for removing registration IDs
Restructure project settings

The project settings restructuring from a module to a package is
the first step to allowing local settings which are configured
on a per-deployment basis and as such are not checked in to version
control.
Support local settings

- Take care of using the local settings to override the defaults
- Ignore local_settings.py so it is never checked in to VCS

The local_settings.py file needs to exist in the settings package
and should probably be a symlink to a corresponding chosen settings
file.

Two additional files are provided to ease the set up of local settings:

 - a file which will contain default development settings which will
   disable features which slow down development and are not crucial in
   a non-production environment
 - a template for production settings -- provides a reference for which
   settings values need to be filled out before deploying a production
   version of the app
Set up Celery using RabbitMQ as the Broker

Sets up all the requirements to use celery as the asnyc task manager.

It makes sure to install RabbitMQ to the Vagrant box so that celery
integration with a real message queue can be tested. However, the
default development settings specify that all celery tasks run
synchronously. This is done in order to prevent issues for developers
who do not wish to develop any features depending on the async
execution of tasks.
Implement a BaseNotifier class

The class specifies the interface which all concrete notifiers need to
implement. A notifier class is one that is interested in handling
a newly created chat message.
Implement a GCM notifier class

The class exposes a convenient interface for sending out notifications
when a new message is created. Instances of the class take care to
automatically gather the list of users which need to be notified
about the message (the ones belonging to the chat room in which the
message was posted) and sending out a request to the GCM service.

The ``notify`` method is completely synchronous and care should be
taken not to use the ``GcmNotifier`` within a time-sensitive context
such as an HTTP request/response cycle. The notifer should be used
in an async manner, e.g. queuing the notification as a celery task.

There are settings values for the project which can disable sending
GCM-based notifications, if necessary.
Add a celery task to alert message notifiers of a new message

The celery task is supposed to be queued once it is detected that
a new message contains a valid signature.
Adapt the signature validation hook to queue celery notification task

When the signature is found to be valid, the hook makes sure to queue
the celery task which will notify all observers (Notifiers) that a
new message has been posted.
Ignore an import error when local_settings does not exist
Merge branch 'feature/gcm'

The implementation of GCM notifications when a new valid message is
created.

It includes services for managing the registration_ids of users too.