Configurable timeouts

Previously there was no way to configure timeouts without calling the FTPClient directly.
Timeouts should be more prominent in the API as they are an important part of ensuring that whatever is using the client is robust. Especially the `data-timeout-ms` which, when not set, will result in the thread hanging indefinitely on an inactive connection.
Defaults are currently set to the backwards-compatible values, but I would be for changing the default data timeout to something non-infinite.