Two patches

The first commit adds `regex` variants that return Nothing when they fail to parse the regular expression.

The second extends the regex parser with two lookahead assertions: `(?=expression)` and `(?!expression)`.
I also added a combinator that creates a negative assertion of a parser.