Let COMPILE_ASSERT use static_assert if available.

The motivation is that gcc 4.8+ and clang trunk warn on unused local
typedefs, which COMPILE_ASSERT adds. After this change, the warning
will be happy at least in C++11 builds. static_assert also produces a
slighly nicer diagnostic than the typedef method.

While here, merge https://codereview.appspot.com/57500045 and
https://codereview.appspot.com/13112043 so that the steps on
https://code.google.com/p/re2/wiki/Contribute work again.

R=rsc
CC=re2-dev
https://codereview.appspot.com/134590043