Make testing for PL_encoding into a macro

This is in preparation for making the test more complicated.
Make a function to get PL_encoding's value

This is in preparation for making the retrieval more complex in future
commits than it is now.  This is going into mg.c because the value is
magical.
Make encoding pragma lexical in scope

The encoding pragma is deprecated, but in the meantime it causes spooky
action at a distance with other modules that it may be combined with.
In these modules, operations such as chr(), ord(), and utf8::upgrade()
will suddenly start doing the wrong thing.

The documentation for 'encoding' has said to call it after loading other
modules, but this may be impractical.  This is especially bad with
anything that auto-loads at first use, like \N{} does now for charnames.

There is an issue with combining this with setting the variable
${^ENCODING} directly.  The potential for conflicts has always been
there, and remains.  This commit introduces a shadow hidden variable,
subservient to ${^ENCODING} (to preserve backwards compatibility) that
has lexical scope validity.

The pod for 'encoding' has been revamped to be more concise, clear, use
more idiomatic English, and to speak from a modern perspective.
mg.c: White-space only

Indent due to new blocks from previous commit
Deprecate setting ${^ENCODING}

The commiter added a no warnings in t/op/leaky-magic.t, and made other
minor changes because of rebasing issues.
toke.c: Consistently upgrade under encoding

The documentation says that intermixing above-Latin1 code points with
ones that would be otherwise encoded to something else, like Greek,
causes the encoding to be foregone.  Until this commit, this only
happened when the above-latin1 code point came first in the string
constant being scanned; meaning string-order was important.  This
changes things to match the documentation
perlvar: More text about ${^ENCODING}; refer by perldiag
perldelta for deprecating ${^ENCODING}