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
> Are there not only two types of tag_names that come out of a mcnp meshtally?

Correct.

> I don't really understand your comment "if tag_name is a tag of length 1

If the user supplies a tag "tag_name" and it is a vector, find it's length (x). Now look at at the e_bounds rootset tag. It should also be a vector, of length (y).

If the user is requesting a multigroup MAGIC method, then x = y - 1. On the other hand, if the user supplied a totals tag, then x=1 and y > 2. In other words, you can use the sizes of the tag_name tag and the e_bounds tag to guess if the user is requesting a "totals" case (instead of looking for the string 'total' in the name of the tag). Does that make sense?