highlightCharacterRanges revisited

- Overlapping highlights of same class where not merging correctly.
- `className` param can be `false` to erase existing highlights (maybe not so clean to implement it here)
- `exclusive` param, if `true` highlights with different `classApplier` are removed from ranges (check for `className` instead of `classApplier`?)

`CharacterRange.prototype.complements` was added for ranges subtraction
Highlighter merge and overlapping
highlight union when contiguous
Merge branch 'highlightJoin' of https://github.com/vitto32/rangy into vitto32-highlightJoin
Merge branch 'vitto32-highlightJoin'
Improvements to Highlighter