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 meant regular operation, usually when writing tests, I assert baseline correct behavior as the first test, then building from there add the bells and whistles. Where as it seems to me that the test coverage could be higher for very little effort.