Updated create_route_defs.py script to use constant values for accessing
shapefile data.
Moved the get_distance_km() func into topology_shapefile_data_model.py
 * Refactored several low-level access to shapefile functions from
   create_gtfs_from_basicinfo.py into topology_shapefile_data_model.py
 * Created a new module for route segment list processing in-memory, and
    to/from CSV serialization - route_segs.py
 * Using refactored functionality in route_segs.py, updated the segment
   creation process in create_network_topology_and_stops.py - it now
   is a 2 phase process that first creates the list of segment_refs in memory,
   and then in a 2nd pass, writes these all out to shapefile.
 * Added a warning to the above process about zero-segment routes.

The latter change hasn't affected speed negatively, it may have increased
slightly actually.
Updated intersect_point_to_line() to also return the uval, for info purposes.
Added mod to bus mode info so it references buses between motorways and
streets.
In func intersect_point_to_line(), fixed a typo error introduced previous
commit, and also added necessary uval to return tuple in zero-length line
case.
Modified the logic slightly in func get_next_stop_and_dist() to deal with
boundary cases based on testing - stops at start and end of routes.
See comment in the commit for further explanation.