[services][blob] Introduce S3 primitives
Summary:
Introduced two S3 primitives:
- S3 path - a convenience struct to store object and bucket name. See C++ counterpart
- Multipart upload session - needed for Put requests to upload large blobs to S3. See C++ counterpart. Its implementation is added in the subsequent diff.
Depends on D5678
Test Plan: Added two simple unit tests for S3Path.
Reviewers: jon, varun, tomek, marcin
Reviewed By: varun, tomek
Subscribers: ashoat, tomek, atul
Differential Revision: https://phab.comm.dev/D5679