Change track_stream format in PostUserTrackingAction.
Add a PreUserTrackingAction
Move the track killing code to UserSteppingAction

This is a pretty big hack -- the track killing should normally be done
in ClassifyNewTrack. However, since Geant stores all secondaries of a
track in memory before applying it, the simulations can use up a lot of
memory. Some physics processes at high energies can produce tens of
millions of secondaries per tracks, taking up tens of gigabytes of RAM.
In order to avoid that the secondaries are filtered after every step,
in the UserSteppingAction method.

Geant4 stores secondaries from all steps of a track in a single
container, which is a simple std::vector of G4Track pointers. Normally,
it should not be modified by the user and all the pointers passed to
the UserActions are const. However, we can work around with a simple
const_cast. After that the the erase-remove idiom is used to remove the
secondaries that do not pass the total energy threshold. The predicate
for remove_if is a lambda function and therefore the file has to be
compiled with -std=c++11.

Track the number of secondaries after every step and filtering manually
in track_approved_secondaries. The SteppingAction does not know otherwise
how many new secondaries were added in the last step and we would end up
with O(N^2).

Also, remove the old track killing code from ClassifyNewTrack because
there is no need to duplicate it.
Modify the ClassifyNewTrack syntax in track_stream.

- have "CLASSIFY" in the beginning of each line
- add information about the creator process

Also, remove the header line.
Only set UserStackingAction if --tracks is set.
Move the storing of particles to PostUserTracking action.

No point in doing the check at every step. If the particle reaches
the world boundary the tracking is over anyway