Change RuntimeException to InvalidStateException on BlockIterator
Use proper indexes on Living->getLineOfSight() when a max length is set
Improved Level->getTile() to a direct lookup instead of linear search