Added a a _throw(except) and noexcept macro.

Doing throw(std::exception) is deprecated in C++11, but used for allocators
in C++03. Defining this _throw(except) macro makes it possible to add
throw(std::bad_alloc) in C++03, and nothing to C++11.

The noexcept macro is added in C++11 to replace the empty throw() to mean
we are not throwing any exceptions. using noexcept instead of throw() makes
us C++11 compatible.
Replace throw(exception) with _throw(exception), and throw() with noexcept.
Define the override and final C++11 keyword for C++03

This makes it possible to use override and final in C++03 code, mening
we get compiler errors if we change the name of a function in a base class,
but not the ones overriding it.
Use override and final where we can.

I have added override and final in all places I could find, might have
missed some, but think I got most of them.
cmake: Add an option to compile with c++11 support.