Use PEG parser

Based on the excellent rust-peg library
Merge pull request #1 from untitaker/peg

Peg