Changed frames to be heap oriented and each frame to refer to two
external frames:
- A return frame, which is the frame to return to.
- An outer frame, which is the original return frame. This is important
in relation to capturing the outer frame for closures.

Signed-off-by: Jakob Brandsborg Ehmsen <jakobehmsen.github@gmail.com>