read_mcnp_inp now retruns a dict

Originally, this function read an MCNP input, grabbed the materials and returned a list of ```Material```/```MultiMaterial``` objects. I think such a list is an inconvenient and unwieldy data type. I changed this function to instead return a dictionary that maps MCNP material numbers to ```Material```/```MultiMaterial``` objects. I made a few other minor changes along the way.
Yes ```read_mcnp_inp``` is bad. I'll see what I can do.