#3 TMAP algorithm ported to a pure java implementation.

Apparently the original algorithm regularly violated array bounds - but thanks to how forgiving (dangerously so) C is with
array bounds, the program never crashed as a result. Java, on the other hand, is a bitch and whines about every single one.
So I added some checks to catch and ignore those errors until I was able to get the human proteome to pass without issues.
There are probably more corner cases that will require more checks to be added.