MongoDB storage driver

This supersedes #94 (cc: @iampersistent). 
> The other drivers do block when polling, this is especially important for services such as SQS or IronMQ where each request costs money.

I see. That's rather unfortunate for the database and filesystem drivers, though. Ideally, I'd want to use a [tailable cursor](http://docs.mongodb.org/manual/tutorial/create-tailable-cursor/) to block on results with MongoDB (instead of slamming the server with `findAndModify` commands), but that would require making the collection capped and also complicate the method quite a bit:

 * Attempt a `findAndModify`. If something was found, return it; otherwise, continue.
 * Create a tailable cursor to find a message and block up to `$interval` seconds on it. If nothing is found, return; otherwise, continue.
 * Re-try a `findAndModify` command, since we expect there is a message waiting. Regardless of whether we find it or not, return afterwards.

I'll open a separate PR to change `while` to `do while` after this is merged. Additionally, I think it'd be good to make the sleep interval configurable as well. I noticed that the database and filesystem sleeps were inconsistent, but I wasn't sure if that was intentional.