Support variation sequences

Expand support for high/low surrogate pairs by also supporting variation sequences so that they are treated as tokens with a screen delta of 1 but a buffer delta of 2. This allows them to be moved over and deleted as if they were a single character even though they have a string length of 2.

```js
'✔︎'.length
2
'✔︎'.charCodeAt(0)
10004
'✔︎'.charCodeAt(1)
65038
```

http://www.alanwood.net/unicode/variation_selectors.html

Closes #3564