Memory opt for mt

in this pull request 
a) introduced improvements to optimize memory usage to support a multitude of use cases and scenarios: notably reconstruction for Run1, Run2, and Phase1 and Phase2 upgrade.
1) it introduces a new utility to compute the running averaged and 95% upper limit on the last N events
in MT.
2) uses it to properly reserve caches and event products
3) add "shrink_to_fit" method to various vector-like data product
3a) add a call to "shrink_to_fit" for data product that support finalization
3b) call "shrink_to_fit" in various tracker-tracking producer prior to event.put
(t.b.d. shrink vectors embedded into elements, notably hit ref in track extra)

b) more general cleanup and reorganization of RecoTracker and ancillaries (more more t.b.d.)
  1) reduce number of libraries, 2) reduce spurious dependencies
c) more MT support including 
    1)default parallel pattern-track-candidate-from-seeds using tab
    2) more stream producer
    3) a global producer
    4)  failed attempt to save memory using various form of thread-safe caches as provided by edm



Kept purely technical. no regression expected in sequential mode. no regression observed
This should be named m_buffer. Also, could you use a ```std::array<std::atomic<int, N>``` instead?