Laziness and MPI support

Provides Lazy evaluation and MPI support
* only par_loop are lazy (whole par_loop execution, subparts (ie, core, own, halo) are executed all at once)
* the refactoring of ParLoop::compute in base and in the backends is meant to evaluate subparts separately later on
* MPI is provided by explicitly splitting subparts of iteration space for each of which a separate plan is constructed (no more ncolors_core/ncolors_owned).

buildbot is happy: http://buildbot-ocean.ese.ic.ac.uk:8080/builders/pyop2-testing/builds/376