Turned the Mark into a value class and added Cursor as a factory class

.. since changing a Mark makes no sense outside of Scanner