Split FilePath into DirPath and FilePath

If this is stored in order, it makes the most common cases of append directory component, and basename/dirname fairly inefficient. I think we should consider either using it in reverse order (i.e. dirs.head is the most nested FileName) or using something other than List.