gmacros: Use _Static_assert only for non-expr static assert
We can't actually use it inside an expression, so keep the old macro for that. Also add a test so that this doesn't break the next time we change it.
@mcatanzaro suggested a lambda expr for C++ in !955 (comment 543175), but I didn't like that because it's not negligible-compile-time cost unlike static_assert
since it has to instantiate a new type at each location where it's called.
Edited by Nirbheek Chauhan