1.700: big rewrite of TRAVERSE.
* split traverse into multiple functions. * don't append things all over traverse, use a collector function * don't insert and remove prune-op to indicate something needs be done even when the collected list is empty... use a boolean flag in all cases. * fix the age-old broken :force (system1 ... system2) feature... with a cerror! * fix the age-old broken (:feature :foo dependency) feature... with a cerror! * tighten :version syntax to only accept the keyword, not any same-named symbol. * use hash-tables for O(1) access where linear search was previously used, notably in visited-nodes and in components-by-name. * use more uniform #+ features for windows. * modify defclass to make POIU happier (hopefully). * factor probe-asd out of sysdef-source-registry-search and sysdef-central-registry-search * fix safe-file-write-date, which I had previously broken when accepting a null pathname. * have serial-depends-on only name the previous thing to depend on. Passes tests on sbcl, clisp, ecl, lispworks, allegro. Fails on gclcvs: bind stack overflow. Is that a regression? small website updates.