Sketch implementation of "python" par_loops

This allows (for Dats and Globals) par_loops to take a python function
as a kernel argument.  Only very lightly tested.
Copy data back out in python par_loop

When we pass a view into the kernel function, the internal indexed
assignment will create a copy which we then need to splat out to the
actual data.
Raise error for further unimplemented case
Remove overcautious exception
Add tests of python par_loop
Fix python par_loops in conjunction with device backends

We need to explicitly manage moving data from the device and updating
its state.
Merge pull request #392 from OP2/py_parloop

* py_parloop:
  Fix python par_loops in conjunction with device backends
  Add tests of python par_loop
  Remove overcautious exception
  Raise error for further unimplemented case
  Copy data back out in python par_loop
  Sketch implementation of "python" par_loops