Because locale.h isn't part of the libc++ modules the class definitions it provides are exported as part of __locale (since it happens to be build first). This breaks <clocale> which exports std::lconv without including <__locale>.
This patch implements locale.h to fix this issue, it also adds support for testing libc++ with modules.
This is not math.h.