Move key_factory creation from Bucket to BucketFactory
Remove 'bucket' from valid Bucket constructor parameter list
Make bucket more composable

KeyFactory creation has been moved from within the Bucket to the BucketFactory.
Now bucket takes a KeyFactory within its constructor. BucketFactory can
also create a connection to supply the Bucket through new accepted kwargs in
make_bucket secret_acces_key and access_key_id.
Make Key.rsync take file-like object instead of filename
Make connection emit custom exceptions on s3 error