Changed the eventbus to use a BlockingQueue.

BlockingQueue has some nice thread-safe features.  Read the huge block
comment on what I did inside completeQueuedEvents() in the QueueCleaner.
There's some very fancy footwork to prevent infinite looping while
offline.