Scide document rework text mirror

This branch does the following:

- Rework Document text mirror to use a C++ backend, bypassing the interpreter and any performance issues which may have resulted from that approach
- Add switches so that mouse, key and textChanged actions are only fired when a func is registered
- Add a switch so that the text mirror update can be turned off
- Cleanups and bug fixes

This has not been extensively tested, but I thought it good to make it public so that others could test and revise. At least one thing remains to be done: Remove the remains of the original async text getter etc. IMO if you want doc text you turn on the text mirror, and keeping an async option adds needless complexity and maintenance. (But speak up if you disagree.)