rST markup fixes for pyop2.ir docstrings
Add IR user documentation
Docs: add PyOP2 architecture diagram
Docs: add section on PyOP2 architecture
Docs: describe general par_loop execution steps
Fix bound of gather loop
Merge pull request #328 from OP2/fix-gather-loop-size

Fix bound of gather loop

Fixes #326
nbytes method on Dat, MixedDat and Global
Add MPI health warning

Make the documentation explict about the fact that nbytes is
process-local.
nbytes attribute for matrices.

Also include a test and fix some defective documentation.
Add an extruded nbytes test.
Merge pull request #327 from OP2/memory_accounting

nbytes attributes
Track loops sorrounding assembly
Add expression splitting
Check that the vectorizer has been correctly initialized
Docs: update backends introduction
Docs: host section for sequential/OpenMP backends
Docs: device section for CUDA/OpenCL backends
Docs: add device data state diagram
Docs: describe state transitions for device backends