TokenDefs now have an optional ignore flag.

TOKEN = TokenDef(r'...', ignore=True) will cause the Lexer to consume
the token, but not return it.
Formatting stuff
Parser Nodes are now passed a ref to the parser instance

Nodes now automatically store their arguments in self.children.
A bunch of things

1) Parser classes may not define a `on_error` method that will be called
whenever `ply.yacc` encounters an error.

2) Parser methods may be used as callbacks via a new `purplex.attach`
decorator. Its return value is passed to its parent in the implicit AST.

    from purplex import Parser, atach

    class MyParser(Parser):
        @attach('e : e PLUS e')
        def plus_expression(self, left, op, right):
            pass

3) Parser's constructor now takes an optional `start` argument which
tells `ply.yacc` which non-terminal the input should resolve to.

4) Parser's constructor now takes an optional `debug` argument which,
when true, will enable `ply.yacc`'s debugging output.
`@attach` inside a Parser may now be stacked

For example:

    from purplex import Parser, attach

    class MyParser(Parser):
        @attach('slist : statement NEWLINE slist')
        @attach('slist : statement NEWLINE')
        @attach('slist : statement')
        def program(self, *args):
            pass

Stacking has the same effect as using '|' inside the production rule.