Move more locale code to t/loc_tools.pl

This trivial code to determine if a locale is a utf8 one or not is
currently used in just one place, but future commits will use it in
others, and will make it non-trivial, and non-obvious.
Regen porting/known_pod_issues.dat

This is to acknowledge the too-long verbatim lines in perlandroid,
which look to me to be better left long
Move an inversion list generation to mktables

Prior to this patch, this was in regen/mk_invlists.pl, but future
commits will want it to also be used by the header generated by
regen/regcharclass.pl, so use a common source so the logic doesn't have
to be duplicated.
regen/regcharclass.pl: Fix warning

wrap() is already defined by the regen infrastructure; no need to do so
again, and get warning if we persist in doing so.
regen/regcharclass.pl: Don't test UV >= 0

An unsigned must always be >= 0, and generating a test for that can lead
to a compiler warning, even if it gets optimized out.  The input to the
macros generated by this are supposed to be UV.  This commit suppresses
any >= 0 test.
Avoid unnecessary malformed checking

regen/regcharclass.pl can create macros for use where we need to worry
about the possibility of malformed UTF-8, and for where we don't.  In
the case of looking at regex patterns, the Perl core has complete
control over generating them, and hence isn't generally going to create
too short a buffer;  if it does, it's a bug that will show up and get
fixed.  This commit changes to generate and use the faster macros that
don't do bounds checking.
fold_grind.t: Use LC_CTYPE, not LC_ALL

We are testing here just LC_CTYPE, so is better to use just that
category.
Taint more operands with case changes

 The documentation says that Perl taints certain operations when subject
 to locale rules, such as lc() and ucfirst().  Prior to this commit
 there were exceptions when the operand to these functions contained no
 characters whose case change actually varied depending on the locale,
 for example the empty string or above-Latin1 code points.  Changing to
 conform to the documentation simplifies the core code, and yields more
 consistent results.
PATCH: Bump Locale-Codes from 3.28 to 3.29

I just released Locale-Codes-3.29 which contains the core modules
Locale::Country, Locale::Language, and Locale::Currency.  The patch is
attached here.

====
Background:

The core modules Locale::Country, Locale::Language, and Locale::Currency
(all part of the Locale-Codes distribution) should be updated on a
regular basis. They contain "codes" from various internet standards
which change over time.

I plan on releasing new versions at 4 times a year to keep the codes
up-to-date. At this point, I'm not planning on any significant code
changes (other than bug fixes), so the only significant changes between
releases should be to update the codes.

Signed-off-by: Chris 'BinGOs' Williams <chris@bingosnet.co.uk>
[perl #121050] Teach B::Deparse about prototype whitespace

It has been hanging or unnecessarily using & since commit d16269d835
caused spaces to be preserved in the prototype and stripped when
applied during sub call compilation.  That commit did not update
B::Deparse accordingly.
Increase $B::Deparse::VERSION to 1.25
regen pod issues
regcomp.c: Swap two else clauses for clarity.

This makes one clause mostly positive tests, instead of mostly negative
tests; using positives is easier to understand.
regcomp.c: Nit in comments
regcomp.c: Avoid calling heavy duty functions when possible

This code calls the general purpose functions to fold and convert to
utf8.  These can be avoided for many frequently used code points.
Rename an internal flag

The UTF8 in the name is kind of misleading, and would be more misleading
after future commits make UTF8 locales special.
Work properly under UTF-8 LC_CTYPE locales

This large (sorry, I couldn't figure out how to meaningfully split it
up) commit causes Perl to fully support LC_CTYPE operations (case
changing, character classification) in UTF-8 locales.

As a side effect it resolves [perl #56820].

The basics are easy, but there were a lot of details, and one
troublesome edge case discussed below.

What essentially happens is that when the locale is changed to a UTF-8
one, a global variable is set TRUE (FALSE when changed to a non-UTF-8
locale).  Within the scope of 'use locale', this variable is checked,
and if TRUE, the code that Perl uses for non-locale behavior is used
instead of the code for locale behavior.  Since Perl's internal
representation is UTF-8, we get UTF-8 behavior for a UTF-8 locale.

More work had to be done for regular expressions.  There are three
cases.

1) The character classes \w, [[:punct:]] needed no extra work, as
the changes fall out from the base work.

2) Strings that are to be matched case-insensitively.  These form
EXACTFL regops (nodes).  Notice that if such a string contains only
characters above-Latin1 that match only themselves, that the node can be
downgraded to an EXACT-only node, which presents better optimization
possibilities, as we now have a fixed string known at compile time to be
required to be in the target string to match.  Similarly if all
characters in the string match only other above-Latin1 characters
case-insensitively, the node can be downgraded to a regular EXACTFU node
(match, folding, using Unicode, not locale, rules).  The code changes
for this could be done without accepting UTF-8 locales fully, but there
were edge cases which needed to be handled differently if I stopped
there, so I continued on.

In an EXACTFL node, all such characters are now folded at compile time
(just as before this commit), while the other characters whose folds are
locale-dependent are left unfolded.  This means that they have to be
folded at execution time based on the locale in effect at the moment.
Again, this isn't a change from before.  The difference is that now some
of the folds that need to be done at execution time (in regexec) are
potentially multi-char.  Some of the code in regexec was trivial to
extend to account for this because of existing infrastructure, but the
part dealing with regex quantifiers, had to have more work.

Also the code that joins EXACTish nodes together had to be expanded to
account for the possibility of multi-character folds within locale
handling.  This was fairly easy, because it already has infrastructure
to handle these under somewhat different circumstances.

3) In bracketed character classes, represented by ANYOF nodes, a new
inversion list was created giving the characters that should be matched
by this node when the runtime locale is UTF-8.  The list is ignored
except under that circumstance.  To do this, I created a new ANYOF type
which has an extra SV for the inversion list.

The edge case that caused the most difficulty is folding involving the
MICRO SIGN, U+00B5.  It folds to the GREEK SMALL LETTER MU, as does the
GREEK CAPITAL LETTER MU.  The MICRO SIGN is the only 0-255 range
character that folds to outside that range.  The issue is that it
doesn't naturally fall out that it will match the CAP MU.  If we let the
CAP MU fold to the samll mu at compile time (which it can because both
are above-Latin1 and so the fold is the same no matter what locale is in
effect), it could appear that the regnode can be downgraded away from
EXACTFL to EXACTFU, but doing so would cause the MICRO SIGN to not case
insensitvely match the CAP MU.  This could be special cased in regcomp
and regexec, but I wanted to avoid that.  Instead the mktables tables
are set up to include the CAP MU as a character whose presence forbids
the downgrading, so the special casing is in mktables, and not in the C
code.
White-space, comments only

This mostly indents and outdents base on blocks added or removed by the
previous commit.  But there are a few comment changes and vertical
alignment of macro backslash continuation characters, and other
white-space changes
regcomp.c: Change a variable and flag bit names

The meaning of these was expanded two commits ago, so update the name to
reflect this, to prevent future confusion
Update autodie to CPAN version 2.23

  [DELTA]

2.23      2014-01-27 13:50:55EST+1100 Australia/Melbourne

        * TEST / BUGFIX: Improved testing support on Android
          and Blackberry devices. (GH #44, thanks to
          Hugmeir.)

        * TEST / INTERNAL / TRAVIS: Various non-code
          tweaks to make travis-ci more happy with testing
          autodie.

        * BUGFIX: autodie no longer weakens strict by allowing
          undeclared variables with the same name as built-ins.
          (RT #74246, thanks to Neils Thykier and Father
          Chrysostomos.)

        * BUGFIX: `use autodie qw( foo ! foo);` now correctly
          insists that we have hints for foo. (Thanks Niels Thykier)

        * INTERNAL: Improved benchmarking code, thanks to
          Niels Thykier.