Get rid of ‘Utils’ library, don’t loop commands twice and generate them in a more elegant way.
Accept stream as a source parameter to put
Merge pull request #70 from MailOnline/streaming-put

Accept `stream.Read` as a source parameter to `put`
return boolean from hasFeat()

coerce falsey values to false
update tests

fix asylumfunk#2
Merge pull request #79 from asylumfunk/issue/2

return boolean from hasFeat()
allow Ftp.raw to issue any remote command

add test cases for new raw method
remove superfluous pass definition
preserve error replies on USER/PASS failure

add test coverage for invalid login

fix asylumfunk#4
Merge pull request #81 from asylumfunk/issue/3

Allow sending of arbitrary commands
Merge pull request #82 from asylumfunk/issue/4

Preserve error reply codes during authentication failure.
extend keepAlive to take an optional time period

add test coverage
update README to document change to keepAlive
update README to reflect current test coverage

fix asylumfunk#5
Merge pull request #83 from asylumfunk/issue/5

extend keepAlive to take an optional time period