Output Interface Changes/HDF5 parallel upgrade

The output interface to write output files has been changed. Now, a statepoint file is written out from only one place, statepoint.F90. If you look, it is easy to add new variables to the statepoint file for both reading and writing. The write_data command filters to the output_interface.F90 module which then decides what type of data is being written or read in. From there, there are a bunch of compiler directives to see if the data should be written out to HDF5 binary file, MPI binary file or a simple binary file.

 For HDF5, the hdf5_interface is now completely rewritten and does not depend on global.F90.  The goal is to keep all HDF5 specific code to this routine, but there are some places where hdf5 calls are too dependent on OpenMC and cannot be generalized to the interface. For MPI a similar interface was created and contains only the necessary routines to read/write the current data. This can be expanded if needed. Finally, the HDF5 summary file was removed from hdf5_interface.F90 and is now in hdf5_summary.F90. It has been rewritten to call the generic write_data routine.

The code was tested for statepoint writing/restarting for all combinations of HDF5/MPI/serial. With these changes HDF5 source read/write can now be done in parallel which is necessary for restarting any parallel HDF5 OpenMC run.