Initial commit for return as an expression (#320)

To be able to return as an expression, the return must be compiled into
a throw which is caught by the def body. This catch is only added to
methods that are known to throw returns.