regcomp.c: Extract code into function

The code to parse the flags that occur after in '(?foo)' and
'(?foo:bar)' is extracted into a function; some comments were added.
This is in preparation for this to be called from an additional place
regcomp.c: Combine duplicated code
regcomp.c: Slight refactoring for clarity

This code was confusing enough that until a couple of commits ago, there
was a useless setting of a local variable.
Incorporate code review feedback for (?[])

Thanks to Hugo van der Sanden for reviewing this new code.
regcomp.c: Expand diagnostic

Perl 5.16 added a deprecation message for an unescaped left brace
following \b and \B in regular expression patterns.  It suggests
escaping the brace by preceding it with a backslash.  This doesn't work
if the pattern delimiters are {}.  Instead, one can escape the brace
by enclosing it within square brackets.  In recent Perls, this compiles
identically to the backslashed version.

This comit expands the message to suggest both options.
regexec.c: Remove redundant code

This code does a save_re_context() and then calls swash_init, which also
does a save_re_context.  This is unnecessary; the save should be done in
the lowest possible level.
Add interpolations to regex sets

This commit adds the capability for '(?[ ])' to contain interpolated
variables from other '(?[ ])' constructs.  A set operation can thus be
built up from the composition of other ones, without having to worry
about precedence, etc.

Thanks to Aaron Crane for suggesting this.