MongoDB storage driver

This supersedes #94 (cc: @iampersistent). 
Does it matter that you can call `pushMessage()` with a non-existent queue? Or is this not really a concern because users don't call these driver methods directly? I assume your library (or Juno) is the main user here.