Fix bug where charnames xlator doesn't return utf8

A user-supplied charnames translator for \N{} processing doesn't have to
return in UTF-8.  Prior to this patch, the code in toke.c assumed it
did.
Deprecate NBSP in \N{...} names

This is currently allowed, but is non-graphic, and is indistinguishable
from a regular space.  I was the one who initially allowed it, and did
so out of ignorance of the negative consequences of doing so.  There is
no other precedent for including it.
/x in patterns now includes all \p{PatWS}

This brings Perl regular expressions more into conformance with Unicode.
/x now accepts 5 additional characters as white space.  Use of these
characters as literals under /x has been deprecated since 5.18, so now
we are free to change what they mean.

This commit eliminates the static function that processes the old
whitespace definition (and a generated macro that was used only for
this), using the already existing one for the new definition.  It
refactors slightly the static function that skips comments to mesh
better with the needs of its callers, and calls it in one place where
before the code was essentially duplicated.

p5p discussion starting in
http://nntp.perl.org/group/perl.perl5.porters/214726 convinced me that
the (?[ ]) comments should be terminated the same way as regular /x
comments, and this was also done in this commit.  No prior notice is
necessary as this is an experimental feature.
Optimize /[a-z]/ and /[A-Z]/

These bracketed character classes can easily be optimized into smaller
probably faster regops that match identically.
regen/regcharclass.pl: Don't generate macro twice

Until this patch, this could happen if both 'safe' and 'fast' are
specified with a cp macro.
regen/regcharclass_multi_char_folds.pl: Add some comments
regcomp.c, regexec.c: Move common code to a function

There are other cases where this functionality will be needed as well.