Do not track multiple hints/sorts in Cursor

Successive calls to MongoCursor::hint() or sort() will overwrite the previous value, so there is no reason to store multiple values in the Doctrine class. ODM does seem to depend on the hints property to track UnitOfWork hints (entirely different than MongoDB index usage hints), but that should be changed upstream.
Unit test for Cursor::recreate()
Make Cursor::setReadPreference() chainable and recreatable

Change the return value for setReadPreference() so it can be chained with other methods. The boolean return code from the MongoCursor method will be checked and used to throw an exception if necessary.

Save the current read preference and tags on Cursor, so it can be recreated (as is done for slaveOkay).
Fix reference to $this in CursorTest::testRecreate() closure