Internal cursor improvements for hint, sort, RP and recreation

A few changes here:

 * Avoid accumulating arguments for multiple calls to `hint()` and `sort()`. ODM does seem to use `$hints` to store it's own refresh/slaveOkay hints, but that should be changed upstream. ODM currently requires `doctrine/mongodb` `1.0.*`, and this would be merged to `1.1.x`, so I don't see a problem.
 * Added unit tests for `recreate()`, which should help with doctrine/DoctrineMongoODMModule#70.
 * Improve `setReadPreference()` by making it chainable, able to throw an exception if the driver method fails, and integrating it with `recreate()`.