Refactor the duplicated canonicalize-path logic in FileCollector and
ModulesDependencyCollector into a new utility called
PathCanonicalizer that's shared. This popped up when tracking down a
bug common to both in https://reviews.llvm.org/D95202.
As drive-bys, update a few names and comments to better reflect the
effect of the code, delay removal of ..s to avoid an unnecessary extra
string copy, and leave behind a couple of FIXMEs for future
consideration.