Build in functionality for parsing strings.

- I've refactored the way we setup parsers in order to facilitate this.
There is now a public API function 'setupParser' which allows the user
to set up a new parser which will parse a particular encoding.
Prefix private functions with an '_'.
Update README for new API.