Added proper grammar and production constructs
Made FIRST sets more easily accessible from Grammar

Basically .first is now a function that takes an iterable of symbols
instead of being a dictionary. This will be useful for computing the
closure sets of dotted rules later on.
Added OrderedSet that does exactly what you'd expect
Added a dotted rule representation
Added supposedly working code to compute all LR(1) closures
Also return the initial closure in Grammar.closures()
Added some additional helpers to DottedRule and Production
Added ACTION / GOTO table generation and new parsing code
The RHS of epsilon rules can now be empty
Fixed epsilon rules not reducing correctly
Removed OrderedSet as it's no longer required
Got rid of an unreachable exception
Merge branch 'master' into new-parser

Conflicts:
	purplex/parse.py
Using tuples instead of nested dicts for the ACTION and GOTO tables
ACTION table conflicts now raise a TableConflictError
Added __repr__ to Production
Parser tests (the tests themselves) now have full coverage :D
Added support for terminal and production precedence

class MyParser(Parser):

    PRECEDENCE = (
        (RIGHT, 'UMINUS'),
        (LEFT, 'TIMES', 'DIVIDE'),
        (LEFT, 'PLUS', 'MINUS'),
    )

    @attach('e : MINUS e', prec_symbol='UMINUS')
    def negate(self, op, expr):
        return -expr

"Symbols" in the PRECEDENCE tuple can be anything. Terminals will have
precedence according to their own name, while productions can use
"made-up" symbols (like UMINUS).
Added LEFT / RIGHT aliases to module
Added improved example script