Visual character mode support for 'o'

Visual character mode now supports the 'o' command (inverting the
selection anchor and caret points).  Making this change revealed some
bugs in how I was handling selection which extended into the line break
area and inconsistencies with how those line breaks were treated in
character selections.  The bulk of this change is fixing those issues.
It's substantial enough that I want to commit it and then separately
work on line and block support

This is part of the work needed for #611