Create less temporaries.
Compile subcaptures.

This means that we can now handle things like:

    say(('abcdef' ~~ /$<foo>=[<[bc]>+d]ef || <[de]>f/).hash<foo>.Str())

Note that we don't yet know how to backtrack the cursor stack, so any
backtracking thing after a subcapture won't end well.
Update ROADMAP.