Reapply the change after fixing sanitizer errors. The original problem was that `StringRef`s in `Matches` are pointing to temporary local `std::string`s created by `path::convert_to_slash` in the regex match call. This patch does the conversion up front in container `FilePath`. This reverts commit 2966f0fa505266735dbc8324b8821b7f0aa901ff. Differential Revision: https://reviews.llvm.org/D124964