Split FilePath into DirPath and FilePath

Actually I think we should keep `FilePath`/`DirPath` as a completely agnostic data structure and leave each `Store` or implementation-specific object dealing with schemes and servers.