Using the C++11 "noexcept" keyword instead of "throw()"

 - added a compatibility #define for older compilers