Made Mark exclusive to the external API, Cursor exclusively internal

There were two problems with the Mark class. Its Initial{Line/Column}Number constants were setting up an unnecessary physical dependency with Cursor (because the Mark ctor already checks the constraints). It were also used in both the setting of zero and one based indexing.

I've simplified the Mark and Cursor classes and also identified the SimpleKey class as the one "holding Mark hostage". SimpleKey can instead hold a copy of the cursor and generate Mark instances from it.