Changes to eoa

The model used to consider EOA and SvL in a hierarchy, so it would first look for route suitability EOA and SvL and then, only if there were none, it would move on to Mode Profile EOA and SvL, and so on.
Therefore, if there were multiple EOAs and SvLs, the model would still only consider one of them, and that one would not necessarily be the closest one to the train, which it makes sense to consider as the most important one.
This obviously involved the creation of a bunch of functions and procedures (not THAT many, but still...).

The changes here create a collection of EOAs ans SvLs which are compared and the closest one is returned when any part of the model requests them. This involved changing parts of Kernel, including HandleInputs(), for the collection to be filled at the right moment in the cycle.

Unrelated to all this stuff, Kernel.InitializeElementsForMA() was moved to Kernel.MA.InitializeElementsForMA(), so all the tests using that had to be changed.