Custom word boundaries

Implement the same word boundaries as in Vim.
Almost finished.
TODO: take the underscore as part of a natural-language word.