MongoDB storage driver

This supersedes #94 (cc: @iampersistent). 
@jmikola but what if you have 2 consumers reading from Mongo ? Wouldn't this allow them to process the message twice if you don't store in MongoDB the fact that it has been sent to a consumer ?