Simplified Cluster interface.  Removed the method specifically for writes.  Use ReadPreference.primary() instead.
Default to ReadPreference.primary() for queries
Added the ability to wait for a server that satisfies the requested read preference.  By default, it will wait a maximum of 1 second to be notified that a server satisfying the read preference has become available.  This is  good for users, and it simplifies the code as well.
Added some TODOs