Create TextObjectProvider extension point, refactor plugins

This is functionally identical to the code from @igrekster presented in pull request #384.

The main difference is in the way it is tied together. I chose to create an interface `TextObjectProvider` and an implementation `DefaultTextObjectProvider` in which both `DelimitedText` and `TextObject` instances are created. The text objects are loaded as soon as possible (before any modes or states are initialized) and can then be requested at any time through the `EditorAdaptor`.

The other difference is that I chose to create a new extension point. This way, the `TextObjectProvider` instances can be loaded first, after which the order 

As a bonus feature, I also added `DelimitedText` support so that editor-specific/custom stuff can be added to the surround plugin if anyone needs it. I was thinking about it for XML support, even though that might already been possible through the `:surround ` command.