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 think tolerance should be much larger, if this relative error, the default should be like 0.2 or 0.5 or somthing like that