Implement AST generation for string comparison ops
Add TODO to consider
Implement AST for cmp and <=>
Refactor AST generation and implement rand()
Cosmetics: Reindent switch (oops)
AST generation for srand

Also introduces AST OP flag PJ_ASTf_KIDS_OPTIONAL indicating that the
AST OP may exist with or without its kids. This is different from the
PJ_ASTf_KIDS_CONDITIONAL flag in that the latter pertains to that the
AST OP may only evaluate some of its children at run time.
Propagate optional nature of kids
KIDS_OPTIONAL flag may mean function-specific defaults

Now, if the PJ_ASTf_KIDS_OPTIONAL flag is set, kids aren't just optional
in the AST, but the exact desired behaviour is going to depend greatly
on the actual operation. "abs()" is going to use $_. "rand()" is going
to use 1. That kind of logic will have to be implemented during code
generation for now, but could conceivably be done during AST generation
as well. But that would be more work now, for unclear benefit (and also
pose the problem of how to represent $_ while we can't really handle
global variables yet. Also $_ may be lexical? Ugh).

Review desired.
AST for hex and oct
Generate the macros to find valid OPs for ASTing

fugly. :)