Add action to show a swing tree for selection.

This new action fires up the scalac tree browser on the
selected source in the current editor. This helps track
down position-related bugs, such as issues in hyperlinking,
hovers, completions, etc.

* also fixed 'race condition' errors in the spy view.
Correctly handle boundary conditions in the ScalaWordFinder

I reorganized and simplified the logic in the ScalaWordFinder,
and added a few tests. It seems to fix at least the exception
and a couple of other boundary conditions (revealed by pressing
F3 at the very beginning or very end of an identifier, or even
an identifier between `{}`).

Fixed #1001526
Merge pull request #442 from dragos/issue/race-condition-xml-1001708

Initialize List and Nil so the XML parser does not introduce race condit...
Merge pull request #435 from dragos/issue/SIOOB-hyperlink-1001526

Correctly handle boundary conditions in the ScalaWordFinder
Merge pull request #428 from dragos/spy-improvements

Add action to show a swing tree for selection.
Implement completion overwrites

Allow completions to overwrite existing code. The user can
toggle between insert and overwrite modes by pressing `Ctrl`,
just like in the Java editor. This also respects the Java
editor option for preferring inserts always.

In addition to replacing the existing identifier, we also suppress
the linked mode for arguments (since likely the existing arguments
are not valid, but also we can't erase them, as they may be useful).
This is the same behaviour as in the Java editor

Fix #1000569