SERVER-15402 Improve ShardPtr/ConnectionString management for commands and setVersion

Make Shard almost logically immutable. The only non-const method remaining is reset(), which will eventually be removed.
Merge remote-tracking branch 'upstream/master'