Particle flow calorimetry and the PandoraPFA algorithm