Improve mouseodown handling with expanded ranges
Refactor variable names
Improve selection color
Don't cripple mousedown altogether
Abort caret handling when there is not range
Correct finding of next adjacent position
Refactor logic out of caret.handle()