Refactor file system abstraction
Allow a deployment project to add multiple deploy targets; cache FTP request results for FtpDirectory and FtpFile