FTP: Adds read timeouts and synchronization between swift backend and FTP client.

This prevents a malicious client from performing a DoS by opening up
 many large objects and only reading the first few bytes. Before this
 change SwFTP would load the entire object into memory. After this change
 the download from the swift backend is synchronized with the FTP client
 reading the file.

This change also adds a read timeout for downloading files. If a read has not
 occured in 30 seconds then the file transfer is cancelled and everything related to
 the file transfer is torn down.

Resolves #22 for FTP.