textbuffer: at_boundary and move_iter virtual functions

The purpose is to be able to override word boundaries for word movements
(Ctrl+arrow) and word selection (double click). The two virtual
functions use an enum for the boundary type, so the functions can be
reused for e.g. sentences.

The implementation has two word boundary types (word start and word
end). This is needed for word movements: Ctrl+right go to the next word
end, Ctrl+left go to the previous word start. With a single word
boundary type, it would be more difficult to know if a word boundary is
a word start or a word end (the contents must be analyzed in that case,
for example if the previous char is a space, the iter is probably at a
word start).

Unfortunately two word boundaries is less convenient for selecting a
word with double click. But the implementation is fairly simple.

https://bugzilla.gnome.org/show_bug.cgi?id=562767