Mutable Cursor, immutable Mark

Beside inside the scanner there is not really a reason to mutate a Mark instance. I've added a Cursor class that holds the current position and that can be told what to do. It can be queried for a Mark instance, a specific immutable position.

Unless there is an actual measured performance gain with having Mark as a struct, and I don't see any "unsafe" unmanaged memory handling where it is especially performant with small structs, class is the way to go.