Fix AIOOBE in `ScalaWordFinder`

 Fix AIOOBE in `ScalaWordFinder`

The exception could occur because an arbitrary seq can be passed to the
method `findWord` and not just some special wrappers that are defined in
the overloaded alternatives. Because there were also no offset checks the
result would have been completely useless if this method would have
succeeded without an exception.

Therefore, this commit introduces offset checks and returns `None` if the
offset is invalid. In order to return an `Option`, the API of `findWord`
had to change. This led to the removal of some AspectJ code, namely
`HoverAspect` and `IScalaWordFinder`. I'm not entirely sure if the
removal of `HoverAspect` doesn't break anything. It is definitely not
used in Scala hovers, because the Scala IDE has its own implementations.
It may be used by some Java hovers, but I couldn't find one that
actually uses it. In the worst case this change means that some Scala
elements are no longer shown in Java hovers.

Another change is that `findWord` doesn't accept a `Seq` anymore, but an
`IndexedSeq`. Otherwise a passed linked list would result in an
inefficient implementation.

One constructor parameter in `ScalaPresentationCompiler` had to change
its name, because it would hide the super implementation otherwise,
which can easily lead to a bug.

Last but not least, I didn't want to stop my save actions from adding
`override` keywords where it was necessary. `ScalaWordFinder` is also
completely reformatted.

Fixes #1002238