refs #7325. Move working into base class.

New algorithm base class PeaksIntersection defined for algorithms like PeaksInRegion and any other new algorithm with surfaces involved. Had to make some methods virtual in the process of moving working from PeaksInRegion into the base class, but this does not appear to have affected performance. Will still process 40000 peaks in about 0.3 of a second.
refs #7325. Implement PeaksOnSurface algorithm.
refs #7325. Add performance tests.

Comparing against peaks in region, the equivalent performance tests are producing similar results. PeaksOnSurface is very slightly slower. But we can improve performance here yet. Timings are 0.039 for PeaksInRegion and 0.042 for PeaksOnSurface.
refs #7325. Document geometric calculations.
refs #7325. Extend output workspace.
refs #7325. Remove property from PeaksOnSurface.
refs #7325. Explicitly specify container type.
refs #7325. Fix type conversion warning.
Merge remote-tracking branch 'origin/feature/7325_peaks_on_surface'