MAGIC variance reduction

I added the MAGIC variance reduction technique to variancereduction.py. @makeclean, you should review the method. Tests were also added.

Theory manual addition still needed.

issue #344
I could add that test, but it seems a bit excessive to me. A test as such will only test a single if-statement in the code and it is clear throughout all these tests where the value is not the null value, that it passes. I don't see how one tests where all of the values are above the tolerance will be any different?