Fix AIOOBE in ScalaWordFinder

Reimplementation of #773 without the AspectJ code removal.
I really don't like how the `Option` propagated everywhere. I don't want to have to `map` and `flatMap` everywhere, when this is clearly due to an invalid argument. This method could throw `IndexOutOfBounds` or a similar exception.

Another strategy would be to simply return an empty instance around the given index, following the motto:
> If you put garbage in, you get garbage out

I think both would work, rather than forcing all legitimate use cases to deal with the possibility of `None`.