Source Sampling

This PR adds a C++ class which allows for Monte Carlo source sampling of a particle source distribution defined on a MOAB mesh. This can be done using either analog or biased sampling schemes. A uniform (biased) sampling scheme is implemented natively within the class and the class can sample a user-supplied biased source distribution (e.g. one produced using the CADIS method). Both Cartesian and tetrahedral meshes are fully supported. A full explanation of this is provided in the source_sampling.h doc strings and also the theory manual.

Although this is  a huge refactor from the version I used for the RPSD paper, none of the core methodology has changed. 

The ```Sampler``` class is no longer a singleton, however, I have not implemented a Fortran interface yet. I plan to do this by passing pointers (in the form of unsigned ints) from C++ to Fortran (the advice of @gonuke). That will be my next PR (this one is big enough!).
I must have missed this when reviewing the style guide!  Perhaps this is (yet another?) religious debate, but am of the camp that everything should be private, unless there is a reason to be otherwise.  This is one of the fundamental concepts of object-oriented design and supports separation of concerns.