Shard + master/slave

Hi,

I've made a connection pool that handles Sharding and Master/Slave, it's more of a proof of concept as selecting the sharding key is bit crude (I assume the first parameter is the shard key and prevent operations that have no or multiple keys), the pull request #220 might be better.

I've also added minimock for unit testing

Let me know what you think.

Thanks

--Gilles