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)
> There's a boolean conversion warning? What/where?

`ialnum` and friends return `int`, triggering an implicit conversion from `bool` to `int`, which under certain conditions generates warnings. Doing `return isxxx(...) != 0` or `return isxxx(...) ? true : false` for extra verbosity takes care of it.

> The C cast provides the right semantics here, but for harmonious style I can switch to the C++ ones.

Again, C-style are another source of warnings, even if in this seemingly innocent cast they are just a synonym for `static_cast`.