Stream binary files in a memory efficient way

Binary files don't respond to IO#gets in a memory-friendly way. This
commit extracts the logic for interacting with the FTP stream to a
dedicated Stream class that reads and writes in chunks (regardless of
file structure) and handles the conversion logic for the 'A' data type.

Interface changes are as follows:

* DiskFileSystem#write now takes an `Ftpd::Stream` object instead of
  an `IO`.