Refactor Cursor, add ReactCursor

Creation is now using the Cursor/ReactCursor.build() static method.
Furthermore, refactored out setting the root object on Cursor instances
so that we can store them in a React component's state.