Pass in a regex instead of a string for consistency

It appears that using a string is what caused the parser method to be
type Any.
Add some really naive string parsing
(Naively) support single-quoted strings

The parsers were composed into a single 'string' parser for reuse.