Nits in comments
regcomp.c, regexec.c: Vertically align ternary operators

For clarity
Add regex nodes for locale

These will be used in a future commit to distinguish between /l patterns
vs non-/l.
Don't raise 'poorly supported' locale warning unnecessarily

Commit 8c6180a91de91a1194f427fc639694f43a903a78 added a warning message
for when Perl determines that the program's underlying locale just
switched into is poorly supported.  At the time it was thought that this
would be an extremely rare occurrence.  However, a bug in HP-UX -
B.11.00/64 causes this message to be raised for the "C" locale.  A
workaround was done that silenced those.  However, before it got fixed,
this message would occur gobs of times executing the test suite.  It was
raised even if the script is not locale-aware, so that the underlying
locale was completely irrelevant.  There is a good prospect that someone
using an older Asian locale as their default would get this message
inappropriately, even if they don't use locales, or switch to a
supported one before using them.

This commit causes the message to be raised only if it actually is
relevant.  When not in the scope of 'use locale', the message is stored,
not raised.  Upon the first locale-dependent operation within a bad
locale, the saved message is raised, and the storage cleared.  I was
able to do this without adding extra branching to the main-line
non-locale execution code.  This was done by adding regnodes which get
jumped to by switch statements, and refactoring some existing C tests so
they exclude non-locale right off the bat.

These changes would have been necessary for another locale warning that
I previously agreed to implement, and which is coming a few commits from
now.

I do not know of any way to add tests in the test suite for this.  It is
in fact rare for modern locales to have these issues.  The way I tested
this was to temporarily change the C code so that all locales are viewed
as defective, and manually note that the warnings came out where
expected, and only where expected.

I chose not to try to output this warning on any POSIX functions called.
I believe that all that are affected are deprecated or scheduled to be
deprecated anyway.  And POSIX is closer to the hardware of the machine.

For convenience, I also don't output the message for some zero-length
pattern matches.  If something is going to be matched, the message will
likely very soon be raised anyway.
regexec.c: White-space only
regexec.c: Move goto label to avoid redundant work

This causes a goto to skip work that has already been done.
utf8.c: Add some function parameter assertions

Currently these are not violated, but this guards against future
mistakes.
utf8.c: Fix potential fold bug

The function _to_uni_fold_flags() supposedly had the ability to do
folding based on the current locale, if the correct flag is passed.
However, it didn't actually do that, returning a non-locale fold
instead.  Fortunately, this is an undocumented capability (actually, the
whole function is undocumented), and no current calls to it used the
flag.  This commit causes it to work.
utf8.c: Use OP_DESC instead of passing string.

OP_DESC is simpler and more general.
Simplify foldEQ_utf8

This moves the uncommon case of handling inputs under non-UTF-8 locales
out of this function to the functions it calls, which already have the
logic to handle it.  This simplifies this function, cutting a couple
branches each time through the loop from the common usage.

The locale handling is slowed down somewhat, but even if that were a
concern, another simpler function is normally used for locale handling.
This gets called only when one or both of the comparison strings is
UTF-8, which should be comparatively rare for non-UTF8 locales.
lib/warnings/utf8: Add missing tests

lcfirst had been overlooked, and we had failed to test that turning off
warnings actually suppresses them.
foldEQ_utf8(): Add some internal flags

The comments explain their purpose
perllocale: Nits
Raise warning on multi-byte char in single-byte locale

See http://nntp.perl.org/group/perl.perl5.porters/211909

Something is quite likely wrong with the logic if say in a Greek locale,
Unicode characters (especially Greek ones) are encountered.  The same
character will be represented by two different code points.  This
warning alerts the user to this undesirable state of affairs.