Compile mutually-recursing loops into a single asmjs function.

Rather than maintining a single compiled function for each loop, we
now merge together all loops that can potentially jump to one-another
into a single function.  This removes the need for the execution helper
trampoline and should reduce the overhead of calling into jitted asmjs
code.