improve SolutionTransfer exception

parallel::distributed::SolutionTransfer only works with parallel::distributed::Triangulation. This is now checked in the constructor.
this seems unnecessarily complicated -- couldn't you just do a `dynamic_cast<CONST p::d::T*>` instead of the two separate casts? In that case, the cast could also be moved into the `Assert` so that the condition we really are testing will be printed in the error message one gets.