Rebase #4384 and add customisation function

Rebased #4384 on to this afternoon's IB and added a customisation function.  The 3D clustering is now OFF by default and is enabled by telling cmsDriver:

    --customise SLHCUpgradeSimulations/Configuration/customise_PFlow.customise_use3DHCalClusters

Note that if using the "--command" method to add this to runTheMatrix I think it doesn't apply the original customise for the geometry, so that has to be specified as well.  E.g. for 102xx the normal customisation would be SLHCUpgradeSimulations/Configuration/combinedCustoms.cust_2019.  So to run the 102xx matrix tests with 3D clustering:

    runTheMatrix.py -w upgrade -l 10261 --command "--customise SLHCUpgradeSimulations/Configuration/combinedCustoms.cust_2019,SLHCUpgradeSimulations/Configuration/customise_PFlow.customise_use3DHCalClusters"

@lgray could you check over this and make sure I've merged all the conflicts properly, and implemented the customisation function properly?
In particular I had some merge conflicts in RecoParticleFlow/Configuration/python/RecoParticleFlow_EventContent_cff.py so that should be checked.  I also had to add some code to RecoParticleFlow/PFClusterProducer/interface/PFRecHitQTests.h to get it to compile.