MongoDB storage driver

This supersedes #94 (cc: @iampersistent). 
I noticed that a number of drivers don't implement this method. It would be quite easy to delete the message document in `popMessage()` as we select it with the `remove` option. Even in the Doctrine DBAL driver, couldn't we delete the message after popping it (within the same transaction)? What is the value of a `visible` field in the message records? Is `acknowledgeMessage()` only intended to be called after a popped message is successfully acted upon?