Raise exception if generated code differs across ranks
Note requirement for uniform generated code across ranks
Add test that Dat copy increases version of copied-into Dat
Add modifies_argn decorator

Use this to indicate that a method modifies its nth argument.
Add modifies_argn decorators to Dat.copy and Solver.solve
Fix semantics of multiple par_loops INCing into a Global

Consider the following:

  par_loop(count, set, glob(INC))

  par_loop(count, set2, glob(INC))

Where count is a kernel that increments its argument by one.  After
execution of these par_loops, we expect to see a value of set.size +
set2.size in glob.  However, in parallel we see something larger than
this.  This is because the first loop performs a parallel reduction such
that glob takes the global value of the set size.  This is used to
initialise the reduction for the second loop which is wrong.  Instead,
create a temporary Global with value zero (the identity for summation)
and sum this reduced value into the output Global when done.
Merge pull request #364 from OP2/fix/modifies

Add modifies_argn decorator for methods that modify their nth argument.
Merge pull request #366 from OP2/global_semantics

- Fix semantics of multiple par_loops incrementing into same global.
Attempt to fix versioning issue
Use NumPy sum when computing Subset section sizes
We currently require petsc4py next
Work around gcc 4.8.2 bug

Some of our interior facet integrals are compiled badly by gcc 4.8.2
with -O3 optimisation levels, turn off the relevant flag that does
this.  (GCC bug gcc.gnu.org/bugzilla/show_bug.cgi?id=61068).
Merge pull request #368 from OP2/petsc4py_next

We currently require petsc4py next
Travis: system site packages no longer supported for 2.6
Merge pull request #367 from OP2/versioning_zero_fixes

Treat zeroing Mats and Dats as a modification

Zeroing a Mat or a Dat should trigger copy on write operations.
Optimize sparsity builder code for extruded case

* Type all variables used in loops
* Instruct the Cython compiler to not do safety checks for division
Expose boost::container::flat_set to Cython
Use boost flat_set instead of std::set to build sparsity
Depend on libbost >= 1.48 (but no longer SWIG)
Merge pull request #369 from OP2/sparsity-builder-optimization

Substantially speed up sparsity building

Use a boost flat_set instead of an STL set when building the sparsity
pattern, which gives a speedup of about a factor 4.