Navigation2

replaces #3547 

On Friday Chris reported that
Trackings use of DetLayer is inherently thread unsafe. The NavigationSchool is in the EventSetup but it gives non-const access to its internal DetLayers:
https://cmssdt.cern.ch/SDT/lxr/source/TrackingTools/DetLayers/interface/NavigationSchool.h?v=CMSSW_7_1_X_2014-04-25-0200#028
and those DetLayers are constantly being modified by other code:
https://cmssdt.cern.ch/SDT/lxr/source/TrackingTools/DetLayers/src/NavigationSetter.cc?v=CMSSW_7_1_X_2014-04-25-0200#059
In addition, the DetLayers have internally a NavigableLayer* which they give non-const access to and call non-const methods on in its own const functions:
https://cmssdt.cern.ch/SDT/lxr/source/TrackingTools/DetLayers/interface/DetLayer.h?v=CMSSW_7_1_X_2014-04-25-0200#050
and to top it off, some types inheriting from NavigableLayer use mutables
https://cmssdt.cern.ch/SDT/lxr/source/RecoTracker/TkNavigation/interface/SimpleNavigableLayer.h?v=CMSSW_7_1_X_2014-04-25-0200#042
The only way to deal with this now is to mark all modules which interact with DetLayers as thread-unsafe.

After a week-end long of code analysis I come to the conclusion that the best solution will be:
to create a vector of NavigableLayer const * in the NavigationSchool (or equivalent)
using DetLayer::seqNum as index.
One should them to manage to get the NavigationSchool everywhere 
nextLayers and compatibleLayers are invoked a trivial indirection will do the trick…

This is 
a) easy to find all calls to nextLayers and compatibleLayers.
Labour intensive to percolate the navigation school. NOT error-prone
b) quite logical, it will reassign the responsibility of navigation to the Navigation!
c) No changes to configation (unless percolation fails)

Plan there're is
1) The infrastructure for both tracker and muon is trivial to build.
I wil do it togehter with a couple of use case.

2) at that point the Labour intensive part can be split in many pieces: it it just to find the way to percolate navigation scool and modify the calling sequence to 
nextLayers and compatibleLayers by few characters (litterally!)

3) remove all “mutable” including the Navigation Setter.
add const here and there (maybe a couple of cost_cast in the NavigationSchool itself)

DONE…

status : this PR

1)
done for Base class, Simple, Cosmic and Muon and BeamHalo
tested with properly modified already existing unit tests (now obsolete by deleted code)

2)
done in CkfTrajectoryBuilder and Maker (+ partial in Conversion f/w/c TrBuilder)
one NavigationSetter gone!

At this point we can go in Parallel.

Matti and Vincenzo shared work and finished
all references to NavigationSetter are gone!

3) Done, to be verified by core team


No regression expected
No regression observed