Cleanups and bug fixes, plus Action.h

Moved SequenceAST::append to AST.cpp
Added more standard container methods to SequenceAST
Changed AST* usage to shared_ptr with ASTPtr as typedef
Makefile now makes debuggable executable
Makefile uses -MMD so that header dependencies are made automatically.
Member of ParseResult changed to private members to prevent bugs.
Generally when computing a ParseResult it will be a new one rather than a
modification of an old one, because the memoization relies on the purity
of ParseResults.
Some parser activity has been modified to optimize the creation of AST's, such
as rLoop. The rLoop will not return a SequenceAST if it hasn't parsed multiple
forms. For example if it parses the (x) inside the parentheses the resulting
AST is that of whatever parsed the x, instead of a SequenceAST containing only
the AST from when the x was parsed.
Special functions have been added that allow names to be assigned to empty
Choices or WSequenceN objects. These are intented to be the left-most operands
in || or && expressions.
The final choice of the aexp expression is left-recursive, so aexp needs to be
refactored before it can be used.

Action.h provides semantic actions for parser expression grammars.
It defines an ActionCaller parser. Such a parser has a function it will
call and another parser that it wraps. When the ActionCaller parser tries to
parse it will parse with the wrapped parser. If that succeeds then the result
is computed as the post-parse ParserState and the AST returned by the action
function instead of the default AST returned by the parser. This is currently
not heavily exploited.