Add OpenMP backend.

It would be good to have a single revision to work from for benchmarks, so I thought it would be good to merge in OpenMP now that it works.

I've squashed all the history since I don't think it's very helpful (lots of testing/to-ing and fro-ing) and twiddling bits of the code, and a lot of revisions won't work, and it'll make git bisect and blame more difficult.

Buildbot pass: http://buildbot-ocean.ese.ic.ac.uk:8080/builders/pyop2-openmp/builds/20