Output Interface

The output interface has been updated for the following:
 - Supports up to 4-D array writing/reading for integer and double precision real
 - Users can either write/read from files in serial or parallel with independent or collective I/O
 - Statepoint file writing/reading has been updated for serial I/O for metadata and tally results and parallel for source back
 - Creating a binary output file is now a derived type with type bound procedures 
 - Supports opening multiple files at once with different file handles

~~By default when opening a file in serial without HDF5 active, a default unit number of 100 is used. If multiple files need to be opened, users can specify their own custom unit number when creating the file.~~  **EDIT** New unit is now used for multiple serial file handles.

Statepoint module is an example of how the output interface can be used for writing future binary/HDF5 files.

This pull request address issue #203