HDF5 Reporter

@kyleabeauchamp: Will you review this?

I made one change to the topology module too, basically copying the `from_bytearray` and `to_bytearray` functions to module level functions, instead of just functions on the class. This way, `mdtraj.topology.Topology` is basically identical to `simtk.openmm.app.Topology`, so you don't have to worry about calling `to_bytearray` on a simtk `Topology` when it doesn't have that. This should have been done in the first place -- the two should be as close to identical as possible.