Parses and consumes a <group>.
The productions are: <group> -> (<regex>)
(?:<regex>)
(?><regex>)
(?<flags>:<regex>)
(?=<regex>)
(?!<regex>)
(?<=<regex>)
(?<!<regex>)
(?(<num>)<regex>)
(?(<regex>)<regex>)
(?<name><regex>) (when ALLOW-NAMED-REGISTERS is T)
<legal-token>
where <flags> is parsed by the lexer function MAYBE-PARSE-FLAGS.
Will return <parse-tree> or (<grouping-type> <parse-tree>) where
<grouping-type> is one of six keywords - see source for details.