Use hyphen as an optional URI index delimiter

Our two patterns capture arbitrary URI parts and the authority part,
respectively. However, the authority part did not allow for hyphens,
which are a valid part of a domain name.

Rather than change the existing rule, add a new rule which includes
the hyphen. This means domains like "my-face.com" will token as
"my", "face" and "my-face".

Additionally, move the greedy * in the second clause of the authority
patterns outside the lookahead, otherwise the last part doesn't count
as a token, since it doesn't match the positive lookahead for a dot.

Finally, I find the authority part to be written more clearly with
ranges, as [a-zA-Z0-9], than as a disjunction of matches.