Replace aws-sdk-swift with lightweight URLSession + aws-signer-v4 S3 client
Drop ~27 transitive packages (Smithy, aws-crt-swift, async-http-client, etc.)
down to ~9 by replacing the full AWS SDK with a minimal S3 client built on
URLSession and adam-fowler/aws-signer-v4. The project only uses 4 S3 operations
against S3-compatible providers — the full SDK was massive overkill.
- URLSessionS3Client: putObject (data + file streaming), getObject, headObject,
listObjectsV2 with pagination, SigV4 request signing
- S3XMLParsing: SAX parsers for ListObjectsV2 responses and S3 error bodies
- Proper payload signing: UNSIGNED-PAYLOAD for uploads, empty-body hash for
GET/HEAD (compatible with all S3 providers)
- S3 error XML parsing wired into checkResponse for better diagnostics
- isNotFoundError updated to match new S3ClientError types
- Host header set from constructed URL (correct for both path-style and
virtual-hosted)
- No force unwraps — all URL construction uses guard/throw