Added Error Handling and is_alive() Method

- Added exception handling, with logging, to the _mp_consume() function that is used by the MultiProcessConsumer
- Added an is_alive() method to the MultiProcessConsumer that allows for graceful shutdown (basically: Processes won't die if they use a Queue object and that Queue object still has stuff in it)
- Got rid of proc.terminate() since it is redundant and not needed.

Testing on staging.
Can short-circuit this:
```Python
    for proc in self.procs:
        if proc.exitcode is None:
            return True
    return not self.queue.empty()
```