No More Exceptions for Tail-Calls

This pull request replaces the use of exceptions for stack unwinding with regular `return`s as the overhead of exceptions on modern JVMs is greater than the gains.