Added Stratego-style grammar declarations, as well asprinting and parsing.
Quickcheck says that parse(print(x)) == x.