Split out llvm/Support/FileSystem/UniqueID.h and clang/Basic/FileEntry.h, NFC
Split FileEntry and FileEntryRef out into a new file
clang/Basic/FileEntry.h. This allows current users of a
forward-declared FileEntry to transition to FileEntryRef without
adding more includers of FileManager.h.
Also split UniqueID out to llvm/Support/FileSystem/UniqueID.h, so
FileEntry.h doesn't need to include all of FileSystem.h for just
that type.
Won't this now make llvm::Optional visible as clang::Optional everywhere this header is included? Isn't this considered bad practice in a header?