Refactor base.ParLoop::compute

Orchestrate MPI operations in base.ParLoop instead of the backend subclasses
OpenMP, propagate changes from base.ParLoop::compute
Adapt unit tests to refactoring
Fix lazy execution on solve
Fix, add missing lazy evaluation dependencies
Fix, adv_diff_mpi demo stall
Fix, allocated size for Plan colouring arrays
Refactor CUDA backend