AST: hslice is done
AST: Crude support for array constants
AST: Support ~~
More test fixups for new Emit interface
AST: PADRANGE was already done (Thanks, Mattia)
AST: Implement fc() if supported
AST: gelem was already done
AST: glob()
AST: Rats, glob() is done
Add warning about generated files
AST: Ignore given/when related OPs on perls that don't know them
AST: Refactor code out of giant switch
AST: Refactor _more_ code out of giant switch statement

This is all pretty mindless refactoring, but suffice to say that vim
already refuses to jump between opening and closing braces of the
function that contains said switch statement.
AST: Mostly implement given/when

"Mostly" referring to that "$x++ when 2" will emit a very weird construct
that makes the $x++ become an Empty block in the AST.
AST: break and continue
AST: Fix corner case for when

Hack hack hack. :(
AST: boolkeys => keys
AST: Loop control statements with jump targets

(next, redo, last)

Uses a hash of stacks of lists to track the loop-alikes and loop control
statements as the AST is built. Dynamic labels (recent perls: next $foo)
are excluded, but those are batshit insane anyway. In a nutshell, each
label string (including "" for "no labels") has its own stack of lists
of loop control statements. When we enter a loop, we push a new such
list to the "" stack and possibly the loop's labelled stack.
When encountering a loop control statement, it is pushed onto the
end of the list that is at the top of the stack for the loop control
statement's label. When leaving a loop, we take one list from the stack
for "" and for the label of the loop (if any). We then update the jump
targets for the loop control statements in the respective lists that
we just popped off the stack(s).

(Thanks, Mattia, for the algorithm.)

This change includes tests, but I haven't had a creative infusion on how
to sanely check that the jump target is correct in the tests.
Make perl headers be more C++ compliant
Comment: Explain -DPERL_GCC_PEDANTIC