Feature/bk investigate si r2 pile up

This is to merge in the code I added to get the integral ratio working for pile-up.   I had to make some changes to common files so I'm going to merge through a pull request, including in the I(nfamous)D classes.

Here's my summary of changes:
 - New files: TIntegralRatioAnalysedPulse, IntegralRatioAPGenerator,  PlotIntegralRatios.
 - Changes to PulseViewer to allow plotting from IntegralRatioAPs.  The approach is reasonably extendable, though could be improved.
 - Makefile: new rootcint target
 -`Algorithm::SimpInt` - add integral limits, defaults use full waveform range as before.  Also changed implementation to use `std::accumulate`.  Pedestal is not a constant, but can only be accessed through getters and setters.
 - New `Algorithm::IntegralRatio` - Implements the integral ratio algorithm using the SimpInt algorithm behind the scenes.
 - Added a `GetDirectory(const char*)` method to `BaseModule`.  It gets or else creates a sub-directory of the modules' directory, in case a module makes many plots and wants to provide better structure (such as a directory per source for example) in the output file.
 - `IDs::source` constructors with 4 arguments was changed so that if no value for the 4th argument is specified (giving the configuration of a generator) the generator is created with the `kDefaultConfig` value.  This is the same as for generators but may break existing code since it was previously giving `kAnyConfig`.
 - `IDs::channel` the two possible strings to specify channels that are either fast or slow is now either `-*` or `any` as opposed to `*` or `any`.  This matches the string used for assignment from a string.
 - New debug method for all IDs to print each sub-field of the ID.