Accounting for Nu-Scattering in Keff Calculation

This pull requests modifies the ``Solver::computeKeff()`` routine to account for (n,2n), (n,3n), etc. reactions through nu-scatter. This functionality allows the user to assign nu-scatter as the scattering matrix for one more more ``Materials``, and for this to be accounted for in the calculation for keff. The old formulation for computing keff was as follows:

![equation](http://www.sciweavers.org/tex2img.php?eq=%0Ak_%7Beff%7D%20%3D%20%5Cfrac%7B%5Cdisplaystyle%5Csum_%7Bi%20%5Cin%20I%7D%20%5Cdisplaystyle%5Csum_%7Bg%20%5Cin%20G%7D%20%5Cnu%5E%7BF%7D_%7Bi%2Cg%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5CSigma%5E%7BF%7D_%7Bi%2Cg%7D%20%5CPhi_%7Bi%2Cg%7D%20V_%7Bi%7D%7D%7B%5Cdisplaystyle%5Csum_%7Bi%20%5Cin%20I%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5Cdisplaystyle%5Csum_%7Bg%20%5Cin%20G%7D%20%5CSigma%5E%7BA%7D_%7Bi%2Cg%7D%20%5CPhi_%7Bi%2Cg%7D%20V_%7Bi%7D%20-%20L_%7Bi%2Cg%7D%7D&bc=White&fc=Black&im=jpg&fs=12&ff=arev&edit=0)

The new formulation uses total-nu-scatter instead of absorption in the denominator:

![equation](http://www.sciweavers.org/tex2img.php?eq=%0Ak_%7Beff%7D%20%3D%20%5Cfrac%7B%5Cdisplaystyle%5Csum_%7Bi%20%5Cin%20I%7D%20%5Cdisplaystyle%5Csum_%7Bg%20%5Cin%20G%7D%20%5Cnu%5E%7BF%7D_%7Bi%2Cg%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5CSigma%5E%7BF%7D_%7Bi%2Cg%7D%20%5CPhi_%7Bi%2Cg%7D%20V_%7Bi%7D%7D%7B%5Cdisplaystyle%5Csum_%7Bi%20%5Cin%20I%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5Cdisplaystyle%5Csum_%7Bg%20%5Cin%20G%7D%20%5Cleft%28%5CSigma%5E%7BT%7D_%7Bi%2Cg%7D%20-%20%5Cnu%5E%7BS%7D_%7Bi%2Cg%7D%5CSigma%5E%7BS%7D_%7Bi%2Cg%7D%5Cright%29%5CPhi_%7Bi%2Cg%7D%20%20V_%7Bi%7D%20-%20L_%7Bi.g%7D%7D&bc=White&fc=Black&im=jpg&fs=12&ff=arev&edit=0)

This new formulation was implemented for the ``CPUSolver``, ``VectorizedSolver`` and ``GPUSolver`` subclasses of the abstract ``Solver`` class. 

One item to consider before merging this PR is that the precise value for keff is no longer strictly reproducible for parallel calculations. This seems to only  true in the sub-pcm level. Interestingly enough, it appears to be more of an issue for small problems than for large problems. I only notice this issue when compiling OpenMOC with single precision - I observed no discrepancies when using double precision using the ``--fp=double`` compile time command line argument.

I believe this issue is the result of roundoff error propagation during summations of large arrays. This is the reason we began using [pairwise sum](http://en.wikipedia.org/wiki/Pairwise_summation) throughout the code a year and a half ago. Although the new code still uses pairwise summations of the total, fission and scattering reaction rates, the roundoff error issue is exacerbated due to the fact that I am summing across the group-to-group scattering rates.

One potential fix might be to break up the ``_sigma_s`` attribute for the ``Material`` class into ``_sigma_s`` and ``_sigma_matrix`` attributes. The user would simply need to pass in the scattering matrix to the ``Material::setSigmaS(...)`` routine to be stored in ``_sigma_s_matrix``. Under the hood, the rows of the matrix would be summed up and stored in ``_sigma_s``. Then, when ``Solver::computeKeff()`` is called, the only ``_sigma_s`` would be used rather than the matrix. This *should* reduce roundoff error propagation by implicitly embedding a pairwise sum in into the keff calculation. In addition, it would improve performance, particularly for problems with >100 energy groups.
Hmm, I actually don't see this issue on either GitHub or on my own machine. Are you sure those line numbers are correct?