Reimplement RETR, properly this time

RETR now uses Readable Streams for better performance, properly handles the type (ASCII or Binary), supports REST to restart an incomplete transfer and is just implemented better.