get rid of flags in favor of command components
actually parse blocks and substs
make Component a first-class part of the tree
switch the variable sigil to $
reduce the number of unnecessary pointers
switch to @ vectors