Optimize the output for astral symbols

This commit ensures the output is as compact as possible, i.e. identical to older versions of Regenerate, even for complex scripts like <https://gist.github.com/mathiasbynens/6334847>. Thanks to the new data structure, the new version is *much* faster though.
Add more tests

Some of these are based on https://gist.github.com/mathiasbynens/6334847.
Add `dataRemoveData`

This way, a costly conversion from the custom data structure to a plain array can be avoided in cases like `someSet.remove(someOtherSet)`.
Avoid `Array#splice` where possible

Closes #17.
Use more ‘single-character’ escape sequences

Closes #7.
Automatically rewritten for npm.