Updates for highlighting usage

1. Fix inconsistency when member ranges are longer than expected
2. Fix lastIdent advanced one character too far on array access
3. Add async GUI
5. Remove unnecessary locks
6. Add a switch to disable the feature
Improve project system and add tests