File like object support

@ustudio/dev Ready for review.
since this is **FTP_TLS**, should we have a:

```
mock_ftp.prot_p.assert_called_with()
```
in here somewhere?