Correct gcc version check for __cxa_begin_catch() declaration with or without throw()

The version check was incorrectly implemented, and did not work for gcc >= 5.0.  Additionally, __cxa_begin_catch() is first implicitly declared with throw() by gcc 4.4.0 and higher.

Another question (maybe for another pull request), is whether to add a test for clang here.  I'm not entirely sure whether clang internally creates a declaration for __cxa_begin_catch(), and if so, what its prototype is.