[WIP] text.semanticInvert

My take on `semanticInvert` based on the discussion in share/ShareJS#257

## Left todo

- [ ] How to handle delete operations
- [x] Randomized tests
- [ ] Update Readme