Support for ReadPreferences

_Added:_
- the facility to supply read preferences to `fetch`
- function to get/set a `WriteConcern` on a per-collection basis
- function to get/set a `ReadPreference` on a per-collection basis
- function to set a `ReadPreference` on a per-connection basis

_Changed:_
- `fetch` now creates a new `DBCursor` instead of using `find` because there is no `find` variant which accepts a `ReadPreference`.

Of course this new Pull Request contains tests and documentation. Sorry for the messed up old one, but sometimes even copy & paste is too hard.