TrkExUtils: Allow associating intersector-specific data with TrackSurfaceIntersection.
For MT compatibility, we need to get rid of event-dependent data held in member variables in the intersector tools. In some cases, we don't really need to save this across calls, but it turns out that for SolenoidalIntersector, we do need to save it. So allow attaching an arbitrary data block to TrackSurfaceIntersection in which we can stash this information.
This block will be something deriving from IIntersectionCache; we hold a unique_ptr to it.