Updated generation of MC seeds functionality. Things have been
streamlined a bit and removed an error where seeds were saved
twice to the output stream.

TO DO:
- Save exit seeds to an internal structure and only write to
  disk once execution is complete. This allows the number of
  saved seeds to be appended to the filename, so it's known
  how many seeds will be used when the file is loaded for later
  use. Most importantly this will increase execution time since
  there will only be one write to disk at the end, instead of
  when a photon has exited the medium through the aperture,
  which can happen millions of times.
Updates to the way modulation depth values are saved. Instead of just
pushing optical path length values into the map data structure in the
'Logger', a struct was created that encompasses each respective optical
path length (refractive_index & displacement) for the given photon path
and the map is updated accordingly.

Still needs lots of testing.
Major reworking of the —phase_inversion option, as well as an added command line option ‘—US_freq (frequency val)’.
Some issues that still seem to remain.

To do:
- ‘—AO_sim_loadData’ and ‘—AO_sim’ don’t produce the same result. I believe it has to do with the repopulating the ‘full medium’
  from the stored sensor data. A quick check is to make the entire medium a sensor again in the h5 file (i.e. sensor.mask = ones(Nx, Ny, Nz)).
  If that does not fix the problem it’s an indexing issue, which needs to be resolved.