allow user-defined equality in 'string' parser combinator; refactor closure -> partial application in 'literal'