Fix AIOOBE in `ScalaWordFinder`

The execption 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 `null` if the
offset is invalid (Option can't be returned because this is an API method).

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.

The last change is that invalid points in `ScalaPresentationCompiler` in
method `eclipseProblem` don't even call the `findWord` method anymore.

Last but not least, I didn't want to stop my save actions from adding
`override` keywords where it was necessary.

Fixes #1002238
I don't think this change should be done in this PR. This changes `settings` from a private field to overwrite the inherited `settings` from `scala.tools.nsc.Global`. That one is a `def`, which is a getter on a *public var*, meaning we'd quietly stop allowing changes to `settings`. Not sure if that has any effect or not, but it seems like a deeper change than what this PR is about.

Here's the inherited `settings`, in `Global`:

```
class Global(var currentSettings: Settings, ..) {
  ...
  override def settings = currentSettings
```