traffic: new data type for tracking traffic routes between zones
traffic: stringify/parse methods for path
traffic: new methods for tracking traffic routes between zones
traffic: new TrafficGen2 class finds best-path routes for traffic
traffic: automatically remove known traffic when tile changes
traffic: no longer auto-diminish traffic density

All traffic will be tracked, so we will be able to automatically
increment/decrement traffic density for any tile whenever a new
traffic route is added or removed.
traffic: make trfDensity map full density
traffic: update trfDensity when traffic added/removed
traffic: makeTraffic- for each zone, generate four separate traffic routes

Traffic routes generated:
 * RES zones will generate traffic to COM zones
 * COM zones will generate traffic to IND zones
 * COM and IND zones will generate traffic to RES zones (for workers)

Later on we might also generate traffic for Stadiums, and special zones that
need employees.

Traffic is stored using the Traffic data type and the Micropolis class
takes care of updating the traffic density map.
traffic: tie growth of zones to traffic/wage metrics
traffic: remember traffic modifier even on cycles when traffic not generated
traffic: new method of finding place of worst traffic
tiles: isOverWater should include plain water tiles
traffic: route around bad congestion, use railroads, don't walk on water
traffic: more disciplined fitness function
traffic: allow starting for free from anywhere in the initial building

i.e. no longer add cost of walking from center to perimeter of zone
traffic: treat center of ending zone same as perimeter of ending zone
traffic: perimeter-discount should handle partly-deconstructed zones

if a 3x3 zone was partly bulldozed and a road was inserted,
do not count that road tile as part of the zone for the purposes
of finding the zone perimeter. I.e. the sim still has to pay the cost
of walking from the road tile onto a zone tile.
traffic: make explicit that COM supplies 2x RES
traffic: fix setStartZone to preserve path