Base regex code on char_class_type.

__get_classname() and __bracket_expression were assuming that
char_class_type was ctype_base::mask rather than using
regex_traits<_CharT>::char_class_type.

This change allows char_class_type to be defined to something other than
ctype_base::mask so that the implementation will still work for
platforms with an 8-bit ctype mask (such as Android and OpenBSD).

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@214201 91177308-0d34-0410-b5e6-96231b3b80d8
(cherry picked from commit 1757386944b0206e6f5210a6bb001ca89d80aabe)

Change-Id: I7187cba000d6cafbe02b1ea5026f968542a909b2
Make Android's ctype_base::mask unsigned.

Keeping the regex code sane is much easier if we match the other
platforms and use an unsigned mask.

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@214442 91177308-0d34-0410-b5e6-96231b3b80d8
(cherry picked from commit 3ab406107dcdbe10ec2b3f2f8ce37129d132b71a)

Change-Id: If15df5f68783a23cbfc60075355f8481d60c11db
Fix regex_traits<T>::char_class_type for Android.

Android can't use ctype_base::mask for its char_class_type because the
bionic ctype implementation comes from openbsd, which uses an 8-bit
ctype mask which isn't large enough to encode the standard ctypes and
__regex_word.

Change-Id: Iee4b8dd465ff2cb358ed2b10e1c3a499437403b7
Add locales to available_features for tests.

Linux has a lot of failures caused by not having support for certain
locales. Since these come out as a lot of noise in the test results,
have lit.cfg detect the presence of the various locales used in the
tests and add them to config.available_features as locale.LOCALE_NAME.

This patch also adds REQUIRES: locale.REQUIRED_LOCALE to every test that
I saw failing in this manner. We probably need to add more for all the
tests requiring en_US.UTF-8, but we can do that on an as-needed basis.

One thing that concerns me is how many tests get skipped because of
missing locales (especially in regex/). We should make a point of
splitting up any tests that test default behavior _and_ behavior under a
given locale so that we aren't losing coverage for default behavior.

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@214753 91177308-0d34-0410-b5e6-96231b3b80d8
(cherry picked from commit b4ed5ca01e2b984687ce560b08c20c28ec3cae98)

Change-Id: I927e18139449dcc74abcca63aaf72e7b2c8c4a25