Inflict a gruesome death on ve.ce.getOffset() and reincarnate it

The old ve.ce.getOffset() code seemed to work but was labyrinthine and
incomprehensible. This is a rewrite from scratch that should be
easier to deal with.

Behavioral differences that the tests had to be changed for:
* The last cursor position no longer magically jumps over the internalList.
* Cursor positions inside of inline nodes now map to the offset inside
  the inline node, rather than the offset after it.

Change-Id: I324e42af4c87379ff2dee21e40b91fcf911f6769
Merge "Inflict a gruesome death on ve.ce.getOffset() and reincarnate it"