Minor: Restore the view last

Restore the register before we call winrestview.

Make SetupHighlights bang so I can easily source this file during
testing.
Correct cursor position for visual mode

Since we call a function when invoking from visual mode, winrestview
can't restore the proper cursor position. Use gv to restore the visual
selection (which also repositions the cursor to the right place) and do
Esc to clear visual selection.
Don't use whole words in visual mode

Users can select arbitrary visual content that may end with spaces or
punctuation, so we cannot require word boundaries.