allow repetition of an empty expression

There isn't really any reason to disallow it at the abstract level,
though you probably don't want it in your input syntax. The implementation
is trivial: repetition (zero-or-one, zero-or-more, one-or-more) of an
empty expression is the empty expression.
detect repetition of an empty expression in the regex parser
update the todo list
move the basic regex parser into the library
update the todo list