Implements Redis-backed event system

The implementation uses an asynchronous publish/subscribe pattern with
Redis as the queue. In addition to a topic-based subscription method,
objects can be 'watched' which forwards events about the object to a
custom handler.

Fix #46