Fixed MPI_FILE_WRITE() argument types.

Some of the MPI_FILE_WRITE() calls in the SDF library used 8-byte
integers which don't match the MPI standard's specifications.
Removed some compilation warnings.
Only convert point data when necessary.

There was a bug when the SDF library was instructed to convert
point arrays from double to single precision before writing to
file. The entire buffer array was converted even though it is
only necessary to convert the data being written. This led to
output dumps being much slower than they should be.
Bug fixes for the lagrangian mesh SDF blocktype.
Added "species_id" field to SDF point blocks.

This adds read/write support to the fortran SDF library for
adding a "species_id" field to the metadata of all point blocks.
It also adds read support for this field to the C-library.
Hack to work around issues on filesystems without flock().

If a filesystem is mounted without support for the flock()
system call then non-interleaved parallel writes will fail.
This patch enables a ROMIO hint which is known to work around
the issue on some systems.
It is not a true fix because the underlying problem is with the
filesystem and not EPOCH. It is a bit of a cludge and is not
guaranteed to work on all MPI implementations.
General tidy up.
Better error handling for SDF.
Various small bugfixes and corrections.
Added point variable I/O accepting a generic iterator.

This patch adds input and output routines for point variables which
accept a new iterator interface. The new interface now accepts an
extra parameter which can be used to alter the behaviour of the iterator.

For example:
   FUNCTION iterator(array, npoint_it, start, param, direction)
     USE sdf_common
     REAL(num) :: iterator
     REAL(num), DIMENSION(:), INTENT(INOUT) :: array
     INTEGER, INTENT(INOUT) :: npoint_it
     LOGICAL, INTENT(IN) :: start
     INTEGER, INTENT(IN), OPTIONAL :: param, direction

     IF (param .EQ. c_iterate_a) THEN
       array = a
     ELSE
       array = b
     ENDIF

   END FUNCTION iterator
Added input/output of integer point variables.
Added 8-byte integer plain_variable support.
sdf_read_plain_mesh now takes array arguments.
Made the subarray parameter optional for meshes.
Removed redundant input routines.
Added extra output_point routines for backwards compatibility.

One of the previous changes added a 'species_id' field to all
sdf_output_point routines. This change adds back an interface
which does not require the field so that older codes need not
be changed.
If the old-style interface is used then 'nospec' is used for the
'species_id' field.
Changed SDF point array iterator INTENTs.
Added station_derived blocktype.
Added a generic, checksummed arbitrary data block.
Added input deck support to the datablock type