Error if attempting to iterate over a MixedSet

We currently dtrt if passed a mixed iteration set to a par_loop, so
raise an exception instead.
Fix Global.data_ro property for device backends
Opencl: alias names for non-unique Dats in direct loop codegen

Consider a parallel loop that accesses the same Dat twice:

    par_loop(..., dat(READ), dat(READ))

as happens when computing the inner product of a dat with itself.  The
opencl codegen only produces a wrapper stub argument for dat once, but
inside it assumes that it can see it twice.  Set up aliases in the
wrapper so that we can refer to dat as either arg0 or arg1.
Add magic methods to MixedDats

This allows +, * and friends to work as expected.
Add inner and norm methods to Dats

Only l2 inner product implemented for now.
Add test of Dat.inner
Add Neg (unary minus)
Allow passing no pragma to c_for

This gives us a short way of constructing a for loop that is not an
iteration space loop.
Convert all base Kernel constructions to use AST
Merge pull request #338 from OP2/linalg

- Support magic methods on mixed dats.
- Replace all construction of kernels in PyOP2 by IR kernels.
- Very minor device backend fixes.
Allocate zeroed Dat buffer on device

We promise if the user doesn't pass us data it is zeroed, but we were
not previously doing this on device backends.
Fix copy par_loop for MixedDat and add test for it
Add MixedDat copy constructor and test for it
Add optional subset argument to Dat's copy method

The copy method on a MixedDat does not support subsets.
Merge pull request #357 from OP2/fix/mixed-copy-parloop

- Add copy constructor for mixed dats.
Subset keyword argument for MixedDat.copy must be None
Add interface to likwid marker functionality

Allows us to initialise and finalise marker recording from
python (necessary to avoid overhead in kernels).
Add likwid configuration variable

If init is called with likwid=True, the marker initialisation code will
be called (also if PYOP2_LIKWID_PROFILING is set).
Add likwid configuration variable

If init is called with likwid=True, the marker initialisation code will
be called (also if PYOP2_LIKWID_PROFILING is set).
Add profiling context manager

Use: with profiling(basename, name)