3d cursor

This PR is not ready to be merged. I'm looking for some feedback before going any further.

1. The cursor is designed to work in both locked and unlocked pointer modes.
2. In unlocked pointer mode the browser cursor is hidden and replaced with a webgl one in sync with mouse coordinates.
3. When in locked pointer mode the cursor lives in the content scene in sync with the camera orientation. I want to add multiple modes suitable for different kinds of content. For instance, a) a mode where the user can move the pointer radially inside the scene, b) a mode where the pointer is not in sync with the camera rotation but the user can retrieve it if lost in the center of the FOV by moving the mouse. Should those modes be implemented in the Cursor as configuration options? Or should they be implemented as separate modules that inherit from a basic Cursor?
4. I'm not doing anything to determine if the cursor hits any of the objects of the scene. Is this something that should be part of the cursor API or it should be part of a separate module/class?