Repair :surround command, keybinding was broken.

The call to .union would create a new HashMapState which is a copy,
hence modifying the DelimiterState singleton would no longer make
custom surrounds available to the user.
Refactor key parser to handle crazy combinations.

Vim allows a mixture of <> notation and < or > characters without
problem, whereas Vrapper would force the user to write <LT> if a <
character was meant.

Implement a lot of back-out options to handle all cases, add test code.