Cursor / Selection API changes in Editor

Here are my suggestions for editing the cursor and selection API. My main goal is consistency and symmetry. I'll pepper with inline comments explaining my decisions.
Do we use it internally? I remember writing it for something but I forget what.