Include the Encode extension in the ALL_STATIC build on Win32 for VC++

Thanks to Jan Dubois and Nicholas Clark for pointing out that Encode has
subextensions which need statically linking too, and that Configure has
a special case for handling this which we can mimic in config_sh.PL.

Unfortunately, however, while this works for VC++, with MinGW it gives
undefined reference errors to three symbols from Encode/CN.o
(_cp936_encoding, _euc_cn_encoding and MacChineseSimp_encoding) and two
from Encode/JP.o (_cp932_encoding and _euc_jp_encoding), so we must retain
the exclusion on Encode for MinGW for now, much like the Compress/Raw/Bzip2
problem found before. Hopefully these are all fixable soon.
perldiag: Correct descr of ‘Expecting '(?flags:(?[...'’

I did not realise at first that (?:(?[...])) is forbidden.
Allow qr/(?[ [a] ])/ interpolation in (?[...])

Interpolation fails if the interpolated extended character class con-
tains any bracketed character classes itself.

The sizing pass looks for [ and passes control to the regular charac-
ter class parser.  When the charclass is finished, it begins scanning
for [ again.  If it finds ], it assumes it is the end.

That fails with (?[  (?a:(?[  [a]  ]))  ]).  The sizing pass hands
[  [a]  ]... off to the charclass parser, which parses [  [a] and
hands control back to the sizing pass.  It then sees ‘  ]))  ])’,
assumes that the first ]) is the end of the entire construct, so the
main regexp parser sees the parenthesis following and dies.

If we change the sizing pass to look for ?[ we can simply record the
depth (depth++) and then when we see ] decrement the depth or exist
the loop if it is zero.