Improved integration of logical pathname support with the rest of pathnames.
Generalized TRANSLATE-PATHNAME to work on logical pathnames and :WILD-INFERIORS, and used this to implement TRANSLATE-LOGICAL-PATHNAME. Generalized PARSE-NAMESTRING to be able to parse logical namestrings, and use it to implement LOGICAL-PATHNAME. Fixed some type declarations that didn't allow :UNSPECIFIC or :WILD when they should. Fixed PATH-DESIGNATOR type to allow complex strings. Added utilities for canonicalizing logical hosts. Fixed pattern matching code to consistently accept :WILD and :WILD-INFERIORS. Changed namestring-parse-error to inherit from PARSE-ERROR, and made logical namestring parsing use it so that :JUNK-ALLOWED T works. Mostly rewrote logical namestring parsing. Fixed some erroneous simple-string assumptions. Changed namestring parsing in general to give preference to parsing as a physical pathname with a search-list, since we can (and must be able to) parse undefined search-lists, but we can't parse logical pathnames with undefined hosts. Reinterpreted the spec for logical pathname parsing somewhat more liberally. Changed WILD-PATHNAME-P to recognize :WILD and :WILD-INFERIORS. Fixed argument order to COMPONENTS-MATCH in PATHNAME-MATCH-P. Generalized xxxCOMPONENTxxx matching operations to handle integer and keyword versions, replacing inline special-casing of versions. Signal an error if the TO pattern has more wildcards than the FROM pattern. Fixed out-of-bounds errors in MAYBE-MAKE-LOGICAL-PATTERN. Deleted SAVE-LOGICAL-PATHNAME-TRANSLATIONS. Simplified search-list hackery in LOAD-LOGICAL-PATHNAME-TRANSLATIONS. Moved COMPILE-FILE-PATHNAME to compiler/main.