Cache dynlex lookups.

As suggested by TimToady++, we stash them within frames, so we get
lifetime management for free (including if continuations happen). We
poke it a few frames down the stack at various intervals, to try and
maximize the benefit. Can likely tune this a bit more yet.