Prevent strange behavior with IAND intrinsic in gcc 7.2
Created by: paulromano
@cjosey pointed out to me recently that the OpenMC tests fail with gcc 7.2. I was able to track down the cause to a change in the result of the IAND intrinsic function as it is used in our random_lcg.F90 module. It turns out we are actually relying on the fact that when the product of two 64-bit integers overflows, it usually wraps around and ends up being a negative number. However, strictly speaking that is an undefined behavior per the Fortran standard, so the result could be anything. When I tried submitting a bug report to gcc arguing that IAND should be well-behaved even when one of the arguments is the result of an expression that is undefined, they rejected it as invalid code.
For the time being, I've figured out that if one of the constants we use in random_lcg.F90 doesn't have the parameter attribute, the desired behavior is obtained. This at least will cause our test suite to pass when using gcc 7.2. Longer term, it would be wise to just rewrite our LCG algorithm in C/C++ (ahem @smharper), where we can use unsigned integers that have well-defined overflow behavior.