Track frame.

Instead of using a frame context object, I'm using an array that
contains the state of the previous frame, where a frame is a descent
within a specific template. The use of a frame object to gather the
variables in the `rewrite` and directive handler function signatures
caused the source to grow by 0.8k instead of the 0.2k that comes from
adding the `frame` parameter to the `rewrite` function signature.