Add support for sharded collections

I have added supported for specifying numberOfShards and shardKeys when creating a collection.
I have also implemented the Collection.Properties() method to retrieve collection properties from an existing collection.
Additionally I have implemented the call to /_admin/version to retrieve the server's version and role (if in a cluster, I needed this to activate/deactivate some tests).