Add support for "local" par_loops

If we pass the flag `only_local=True` to a `par_loop` it will only compute
over owned set entities (even in the case of indirect loops).  Once the
computation has finished, Dats accessed via INC perform a halo exchange
to *gather* remote increments into their local data.

Such loops only make sense if none of the Args are Mats and if Dats are
only ever accessed as either `INC` or `READ`, errors are raised in other
cases.
Completely unrelated to this pr, but we might want to "rebrand" the string representations as PyOP2 (or just drop OP2)