Move Problem::distributed() out of #ifdef MPI

So that we can easily check if a problem is distributed without having
to write our own ifdefs around it.

If we don't have MPI the function just returns false.
Make LinearSolver::is_doc_time_enabled() const