[bugfix] Avoid using non-official implementation details of DUNE_THROW
When throwing a MatrixBlockError the DUNE_THROW macro was
abused to also set the data members of MatrixBlockError by
referring e.g. to the local (in macro) variable name th__ex.
I consider this a bug, since these are undocumented implementation
details. Furthermore their use prohibits any change to DUNE_THROW
e.g. to make it constexpr friendly.
This patch fixes this by simply not using DUNE_THROW but
constructing the message manually using a std::ostringstream.