At present, basic reference functionality is defined in the Cite extension, but there are many pieces of underlying functionality in VisualEditor standalone. These pieces cannot be understood or modified effectively without understanding how Cite goes on to use them, making the codebase harder to maintain.
This task will define a `ve.dm.ReferenceNode` class in VE standalone, and move and adapt basic functionality from `ve.dm.MWReferenceNode` in Cite so that it can be effectively understood, tested and operated from within VisualEditor standalone. This should improve code legibility and development simplicity. It should also simplify coordination between VE core functionality and the sub-references project work occuring within Cite.
This task will be considered "done" when basic reference logic can be understood, tested and operated within VisualEditor standalone's data model using the `ve.dm.ReferenceNode` in VE standalone, and when `ve.dm.MWReferenceNode` in Cite inherits that logic. A working UI for reference manipulation in VE standalone is //not// part of the definition of "done".