StringDownload step: more informative error message

Changed error message when buildbot.steps.transfer.StringDownload
is instantiated with invalid 'mode' argument. Include more context
on which 'mode' is invalid.
transfer steps: broke out slave check code

Broke out code to check slave version to it's own function.
transfer steps: broke out _TransferBuildStep init code

Move common code of all transfer steps to _TransferBuildStep.__init__().
This fixes pylint warning: 'E0203 (access-member-before-definition)'
unit test on buildbot.steps.transfer._FileWriter.__init__()

Test creating an instance of _FileWrite class. Test the code path
where destfile's parent directory is created.