Make hdf_fields a struct.

Having it as a struct allows it to be more easily extended without
creating any extra code (e.g. in order to add the fields of another
table).
Store custom event information in the G4Event.

Using the SetUserInformation method store simulation-specific
information in the G4Events. This includes the current event's inital
particle's PDG ID, energy, incidence etc. The information is stored by
the primary generator as an UserEventInformation class (derived from
G4VUserEventInformation).
Store an "events" table in the HDF file.

The events table contains meta-information about each event, including
the initial particle's parameters and the number of particles in an
event.