Add PDF based PMT charge picking 

This makes PMTCharge a pure virtual class and makes the existing code (from MiniCLEAN presumably) a subclass MiniCleanPMTCharge. The existing code is the new default unless MC.pmt_charge_model is set to specify an index of the table named PMTCHARGE containing a charge PDF. In that case PDFPMTCharge is used by Gsim to pick charges from the specified PDF.

This is a "quick fix" for using real charge distributions that will see changes when I modify the code related to PMTINFO. Having to specify MC.pmt_charge_model in addition to the the geometry is redundant, but there is not (yet) a nice way to handle this for arbitrary detector configurations. Additionally Gsim currently assumes only one type of PMT is present in the geometry (hence a global specification of PMT model instead of inferring from geometry), which will be addressed later.
Please include a Doxygen-compatible header block documenting `PMTCharge` at the top of this file.