Replace the switch-based STATIC_ASSERT, which is a statement and thus only usable inside functions, with a declaration-like macro. It uses _Static_assert in C11 mode and, as an extension, with GCC >= 4.6 and Clang in pre-C11 modes. Other compilers fall back to declaring an extern array whose size is negative if the assertion fails.
Since STATIC_ASSERT now expands to a declaration, move its use in secp256k1_ge_impl_to_bytes before VERIFY_CHECK to avoid mixing declarations and code, which C89 forbids.