Domain decomposition merge
Created by: liangjg
This PR adds domain decomposition(dd) to OpenMC. To support this a number of changes have been made throughout the codebase - mostly minor, but some major.
- Adds basic domain decomposition classes and functions
- Adds on-the-fly memory loading of tally results data
- Changes from a single particle data structure used for tracking to an array of particles
- Changes source and fission bank arrays to re-sizable vectors
- Changes the random number scheme between batches - streams of parent neutrons are continued by the children.
- Updates the documentation for usage of domain decomposition, and otf-tally
Notes 1: The merged version will not change calculating results if dd is not activated. The calculations using dd with different parallel processes would get identical results, but they are different from non-dd runs because of the new random number scheme.
Note 2: Several features have been implemented but finally removed for this PR, such as another implementation of distributed material (input in material file), on-the-fly allocation of material data (and output material), and a unit testing framework. They can be found in the commits history.