Move sequential code generation to new host.Arg base class
Move OpenMP code generation to openmp.Arg, inherit host.Arg
No more need to specialize c_kernel_args for OpenMP
Remove specialization of OpenMP c_addto_{scalar,vector}_field
Remove specialization of OpenMP tmp_decl, c_zero_tmp
Use PETSc4py to assemble matrices in OpenMP
Remove assemble_mat from mat_utils
Break sequential code generation into more manageable chunks
Break OpenMP code generation into more manageable chunks
Move ParLoop.build to base class in host
Move code generation to common base class, OpenMP extends it
[testing] Do not check on-device arrays for OpenMP

There is no "device" for OpenMP, so we should not test that the
on-device arrays for matrices are equal. This removes the need for
adding fake _rowptr and _colidx properties to Mats in the OpenMP
backend.
Sensibly rename tmp_dec -> local_tensor_dec
Merge pull request #166 from OP2/refactor-codegen

Refactor sequential and OpenMP code generation

There is almost 100% code duplication between the sequential and OpenMP
backends, which makes both unnecessarily hard to maintain. Also most of
the code generation acts on Args, but all of happens in the ParLoop
class. Conceptually it seems cleaner to have the Arg generate its own
wrapper code.

Introduce a host module with base classes for host backends, to reduce
duplication and facilitate sharing code generation functionality between
the sequential and OpenMP backends.