Start on #251: implement vS and vgS surround keys

* Surround (and optionally indent) using 'S' in visual mode.
Pressing 'S' in visual mode will allow you to press one of the known
delimiters of the regular surround.vim set. These delimiters will then
be used to wrap the current selection.

Linewise mode will put the delimiters on a new line before and after
the selection, then indent the selected text.

Blockmode basically surrounds every line in the block with the
delimitter.

* Surround but don't indent using 'gS' in visual mode.
Pressing 'gS' in visual mode does all of the above except that it won't
indent the selected text.
Work on #251: split code into helper functions.
Work on #251: refactor out ChangeDelimiterCommand

Dynamic delimiters (like XML tags) require input, but DelimiterParser
would always call ChangeDelimiterCommand. For the "surround selection"
feature, we need to make sure that we can pass in another handler.

This commit refactors the dynamic delimiter code to be decoupled by
using the Command and DelimiterChangedListener interfaces.
Work on #251: add doIt method to InsertLineCommand
Work on #251: implement line wise surround

Linewise surround mode should be completed. History locking is
necessary because the line additions, indentation and delimiter
changes would result in multiple changes.

Prepared code for dynamic delimiter support, still needs to be handled
in the *State classes.
Work on #251: add surround block selection

Code based on igrekster's suggestions but untested because Eclipse
has Ctrl+Q bound to quit for some reason.
Fix #251: complete surround with dynamic delimiter

Code now handles `vSt` without exceptions.

It does seem like the undo manager for XML editors acts flaky, it
won't store its undo items as one big change, whereas the compound
change works fine in a JDT editor. It looks like this is caused by
the "indent" Eclipse action, somehow it must bypass our undo manager
and start another compound change.