First phase of a refactor to better handle more complex segment speeds.
Have created new seg_speeds.py module, with classes there that aim to unify
key segment speed access and setting under appropriate abstractions.

Haven't yet done a lot to assign_speeds_to_network_topology.py, that is
next stage of the refactor.
Refactored assign_speeds_to_network_topology and seg_speed_models so that more
of the logic re assigning speeds to segments is handled in seg_speed_models.

User just passes in appropriate function pointers now in assign_speeds main().
TODO:- it would be good to set up a register of function names so they are
mapped by strings, so they could be called at the cmd-line.
Added a nicer way of deciding which speed functions to assign, which can now
be done at the cmd-line via a register.
Minor tidyups.