Clean Propagator and TrajectoryState interface, avoid memory churn

This Pull Request encompasses few related improvements

1) Clean Propagator and TrajectoryState interface
in particular avoids accidental conversion between "double" and "SurfaceSide" and various override issues.
2) remove old-fashion custom intrusive-reference counting in favor of std::shared_ptr
3) make use of std::shared_ptr ability to use custom allocator in single instances to reduce memory-churn during pattern recognition (see comments inlines)

number 3 has now a less striking effect due to the large speed-up of jemalloc itself

no regression expected
no regression observed

latest tests on top of SMatrix improvements that act also in the very same portion of code (construction of TrajectoryState in the AnalyticPropagator "called" from CkfTrajectoryBuilder)