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.
Should this docstring still mention that it is typically called by read_mcnp_inp()? (You can do :func:`read_mcnp_inp` to get a fancy link in the docs too.)  I particularly mention this since "mat_from_mcnp" confusingly sounds like what read_mcnp_inp does. Would it make sense to s/read_mcnp_inp/read_mcnp_inp_mat or some similar renaming?