Lazy initialize external storages

Fixed the following external storages to not connect in the constructor,
but do it on-demand when getConnection() is called.
- S3
- SWIFT
- SFTP

Prerequisite for the fix of https://github.com/owncloud/core/issues/10820

Please review/test @butonic @bantu @icewind1991 

I tested SFTP (manual+unit tests) and SWIFT (manual+unit tests against devstack) and this change did not break them.