Regexes now track their alphabets

Every Regex now have an attribute `alphabet` which returns the type of
the strings it matches. (Right now, this is only `str`/`unicode` or
`bytes`/`str`, but support for custom sets as alphabets will be added
in the future.) `None` indicates that this regular expression is
alphabet-independent.

Currently, this is used to ensure that any regexes combined through
concatenation or union all have the same alphabet (so, for example,
concatenating a regex over text strings to one over bytestrings will
raise a TypeError).