Previously, EditableString had many public members because it needed to
implement the KeyboardClient interface. However, that's confusing
because these methods cannot be called directly.
Now EditableString holds a private implementation of the KeyboardClient,
which hides the implementation details.
Fixes#208Fixes#209