Currently libc++ silently ignores over-aligned allocation requests
made through __libcpp_allocate when aligned new/delete is not available.
This patch uses the diagnose_if attribute to generate a warning in that
case instead of being silent.
The change required converting __is_overaligned_for_new to a macro
so that the diagnose_if condition is still a potential constant expression in C++03.
Is the indentation for these 2 ifs correct? They seem to be aligned with #if and not with while. Don't know if that is intentional.