Handle invisibles at the token level to fix char width measurement

- [x] Get cursor position working correctly
- [x] Fix specs
- [x] Fix leading/trailing whitespace styling
- [x] Handle end of line invisibles in the model as well for consistency
- [x] Fix `editor:move-to-first-character-of-line`

Fixes #3188
Since this method was previously public