CXX-179 Support read preference for commands

The idea here is to make minimal changes to the way the existing driver works in order to support passing a read preference to commands by having them take a Query object (upon which read preferences can be piggybacked) instead of a BSONObj.