Fixed paths for files excluded from license check

On Windows the paths have backslashes causing any check against the array
of excluded files to fail. To solve this I used the path module to
normalize the file paths in the array of excluded paths for the license
string check.
Merge pull request #633 from satsuper/normalize-path

Fix license header check not passing on Windows
Re-implement navigate-to-line-boundary cursor movement
Re-implement navigate-by-line cursor movement
Re-implement up/down movements caching the last caret X position

When navigating vi the up/down arrow keys, the user often wants to move
multiple lines in sequence (e.g., to visually place the caret in one of
the following lines). To stop the caret suddenly jumping to the left
side of the page when crossing an empty paragraph, the caret's X position
will be stored and re-used by subsequent up/down movement for up to 2s
after navigating by line.

Any other operations performed by the local user (e.g., cursor movement
to the left or right), or edit operations by collaborative users will
immediately clear the stored X position.