Pulse consumer

This branch is getting rather large and has some general use components that will be needed for writing all of the tests so trying to finish it up as best as possible so we can keep moving. The `consumer.py` is going to be a work in progress until we get all of the required data into the pulse stream and that will likely take some time. I've written a number of `TODO` comments to try to keep track of what's left. There's only one test at the moment but I think we're going to need to flush out the data in the pulse stream before bullet proofing the consumer.

There is a new manage command
`python manage.py start_pulse_consumer --help`

Please give it a try
`python manage.py start_pulse_consumer --start --outfile 'stdout'`