made __repr__ methods more intelligent

First, the "composition" regexes now use operator notation instead of
the constructor functions in their __repr__ methods.

Second, the addition of a "literal" property allows ConcatRegex's __repr__
to avoid having Regex('x') + repeated one time for every character in
the string.