Modernize Unicode

C++11 types char16_t and char32_t are designed for overloading by Unicode encoding style; they are productively quite useful in Spirit.  So convert to using them as the fundamental types for UTF-16 and UTF-32.

Note that ischar() for 8-bit and 16-bit values just detects whether the value will fit into 8/16 bits, so I changed the one for UTF-32 to do the same; so it is always true.  As it was, you'll end up checking every character for <= 0x10FFFF before redundantly testing it for e.g. equality with 'x'.  Is this change Not Good for some reason?

Also fix high-bit characters being possibly sign-extended before being passed to std::isxxx() which is Very Bad.
Also remove names from unused parameters, so we can use -Wunused to find the really unused ones.
Also a few other minor things.
(updated to mask wchar_t properly)
> I meant my question what/where literally. What warning flag on what compiler?

That's irrelevant, those are warnings reported by users that we have fixed, and they shall not be reintroduced.

From the top of my head, MSVC compatible compilers with a default warning level for the first, and GCC compatible compilers with `-Wold-style-cast` for the second.