Integrating Simple Parser

There are lots of changes that went into this request. Please review the individual commit messages.
Use `fail` instead of `raise` to signal exceptions.