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
Also a much better way of doing this is 

```python
tolerance = kwargs.get('tolerance', 0.5)
```