Added CMake option ENABLE_ASSERTIONS which is enabled for default.

This will cause any build configuration (that we support) to be
built with assertions.

Internally this implemented by removing any ``-DDEBUG`` flags
from the CMAKE_CXX_FLAGS_<CONFIGURATION> and
CMAKE_C_FLAGS_<CONFIGURATION> cache variables. The ``-DDEBUG`` is
then manually added or removed using add_defintions() (note this
does not add the flags to cache variables).