[C++11] Override/final specifiers for classes and methods

C++11 introduced two specifiers which tell the compiler that the method
must match the signature of a parent class's method (override) and that
the method cannot be overridden in a derived class or that the class
itself cannot be derived (final).

These help to comment the code for devs, prevent devs from overriding
classes or methods which were not intended to be overridden, and also
ensure the derived method is actually overriding a virtual method.
There is also the possibility of some compiler optimizations in some
cases.

Tracking #32
VERSION bump