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!).
It is for normal private variables. But you cannot (I don't think) overload a function and a variable with the same name. So in this case you need to have a different but related name. A trailing underscore is the simplest.  For example, I don't believe that the following is valid:

```c++
class WithAnX {
 public:
  // storage variable
  int x;

  // getter
  int x();

  // setter
  void x(int value);
}
```