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.
You are doing the `int(line.split()[1])` operation many times.  probably best to give it a variable name.