Split FilePath into DirPath and FilePath

Any reason not to make this toString `FilePath(path)`. Two reasons I would prefer something closer to default:
 - Stop people accidentally coercing to a string - would be prefer it to be obviously wrong.
 - Makes it harder to differentiate in Logs/Debugging/Assertions.