refactor the exception throwing code

This came out of a discussion with Atgeirr. The class hierarchy
defined now resembles the one of <exception> and <stdexception> plus
some minor additions like the NumericalProblem exception.
convert THROW to OPM_THROW
convert users of the ASSERT and the ASSERT2 macros to standard assert()
convert users of MESSAGE to OPM_MESSAGE
ErrorMacros: remove compatibility macros