Query-level read preference

Added some read method overrides that accept a ReadPreference argument.
Added made connection-level read preference configurable.

Important: I haven't changed the version of this snapshot, because the changes shouldn't break anything.