Refactor ODM Cursor wrapping of base Cursor class

This fixes #635 and includes the test case @levofski originally created in that PR to verify `Cursor::recreate()` preservation of sort orders.