Add op_get/put_dat to C and Fortran OpenMP and CUDA

1. added op_get/put_dat to C library for openmp and cuda.
2. added the same in fortran interface.
3. tested with openmp airfoil
Partial commit while implementing the op_arg for fortran.
Rebasing to get new version of the MPI interface.

In the meantime:
- introduced op_args for fortran
- modified fortran reference implementation to cope with MPI
op_args for fortran, dumping op_dat into binary files

- Implement op_args for fortran and tested with MPI, MPI+CUDA and SEQ back-ends
- Implement dumping of op_dat into binary files for all back-ends
Add new run-time wrappers for plan function

Using CUDA and OpenMP plan callers in the same function (FORTRAN side only)
Add op_arg_gbl for logicals in fortran
Fix op_arg_gbl calls from fortran to c
Decrement mapping when using them in FORTRAN reference implementation
Fix FORTRAN wrapper for plan function to manage 1-to-N based mapping of FORTRAN

Currently duplicates the mappings but only when a new plan is needed.
Fortran reference: add test of set size in fortran side
Fixed bug in FORTRAN reference implementation (type checking for reduction)
Partial commit of the FORTRAN side for MPI+SEQ and MPI+CUDA backends for HYDRA

Fix bug in sequential op_par_loop implementation of MPI.
Tests for multiple back-end compilers, move mapping routines

- Test of Airfoil reference, CUDA, OpenMP, MPI+SEQ and MPI+CUDA for
  multiple back-end compilers (gnu, intel, and pgi)
- Move increment and decrement all mapping routines from
  op2_for_rt_wrappers.c to op2_for_C_wrappers
Added Airfoil FORTRAN OpenMP single node no HDF5 implementation
Added Airfoil CUDA single node no HDF5 implementation
Add Airfoil fortran reference with explicit op_arg_dat for python static translator
Fix MPI+SEQ by adding set dirty bit call when set size is zero
Add op2_hdf5_dummy.c
Added dummy hdf5 file for fortran
Fix op2_C_reference for MPI include