LLVM provides this functionality, so there is no point duplicating it. This is a pretty large patch because we call functions like FileSpec::IsRegularFile(), or FileSpec::GetFileType() all over the place, and all of these are replaced with calls to llvm now. Also deleted is LLDB's entire FileType enumeration.
I don't think it's a very important optimization, but one nice functional change is that we now stat only once when previously we would stat many times on the same file (for example calling Exists() followed by IsDirectory() followed by IsRegularFile() is 3 stats, whereas in this patch we're down to 1.
In addition to all of this, I think this is an important change because it removes an assumption previously baked into the FileSpec API that this was always a valid operation. But it is pretty common to have a FileSpec that refers to a file on a remote platform, perhaps even with an incomptible PathSyntax, and in this case it doesn't make sense to be calling these functions on it.
In any case, it's a necessary pre-requisite to getting FileSpec not be dependent on Host.