Handle returns consistently.

Inside a loop or a try/catch, returns were not handled properly.  They
now have the side effect of emitting instructions, but return an
expression denoting the return value.  This needs to be handled
properly at sites that invoke the return continuation.