Correctly change regexp delimiters and ensure closing delimiter on String().

The previous version wasn't escaping the new delimiter within the regexp.
Also, String() didn't ensure a trailing delimiter,
which breaks the printing of some compound addresses.
Now: regexps are delimited by either / or ? and they have no trailing delimiter.
The trailing delimiter is always added by String().
Explicitly store the reverse bit of regular expression addresses.

We still use the delimiter to determine whether the initial regexp is reversed.
But we store the reverse bit in a struct field, which is easy to toggle.
Much easier than toggling the delimiter, particularly because ? is an re1 metacharacter.