Split the word boundary filter out of SelectionController

Primary intent is to reduce the size of the selection controller class,
in preparation for some additional fixes to aid word boundary detection
in non-english languages.
Rewrite move & select via word boundaries to use a step iterator
Rewrite range-based word boundary expansion to use step iterators
Cope with non-latin alphabets when searching for word boundaries

This has been sourced from http://apps.timwhitlock.info/js/regex, which
creates these sets using the cset JS library. The set includes all
punctuation components only.

Addresses issue #268