Add particles tally

Updated and refactored the Tally class to address some shortcomings, and added more tests.
Out of curiosity, what should the functions be called when there is more than 1 mcnp version, i.e. we now have to support mcnp5 and mcnp6, have a small subset of particle types that are shared. Do we have mcnp() and mcnp6() ?