This gives FileSpec the notion of a path syntax, of which there are 3. Unix Native, Windows Native, and Host Native, which chooses between Unix and Windows automatically. This allows cross-platform support (e.g. storing a Unix Path on a Windows Host, and vice versa).
There are remaining Path issues in PathMappingList. These should be fixed independently by storing FileSpecs instead of ConstStrings, and using the fixes in this patch. Alternatively, llvm::sys::path contains path methods that might help here.