rgw/d4n: squashing the following commits that fix s3 test
failures.
1. rgw/d4n: fixing logical errors for ranged requests in iterate(), aligning
start chunk/block to beginning of the chunk/block boundary.
2. cache head object in write path in case write-cache
is disabled - for maintaining cache consistensy
3. delete dirty blocks of older versions of a non-versioned
bucket as dirty blocks are not evicted, and older versions won't
be written to the disk also.
4. remove dirty objects from the dirty objects data structure,
in case the bucket it belongs to has been deleted.
5. rgw/d4n: fixing compilation issue after rebasing with main.
6. Handle multipart objects correctly in copy object
7. Fix more ranged request errors.
8. handling part_num correctly for multipart and non-multipart objects
9. handling obect name starting with '_'.
10. bug in range request for sending back data to the client, after reading from
backend store.
11. rgw/d4n: code to populate RGW_ATTR_CRYPT_PARTS attr
in d4n filter.
12. rgw/d4n: fix for 'if-match' and 'if-nomatch' for
put object and copy object.
13. rgw/cache: Account for slashes in object name
14. d4n/filter: Handle request headers during read if `next->prepare` isn't called
15. d4n/filter: Fix overwriting of object size and instance
16. rgw/d4n: Supply attrs to `calculate_version`
17. rgw/d4n: Handle ACL and etag in copy_object
18. rgw/filter: Ensure cksum values are maintained
19. rgw/d4n: Set parts_count correctly and check for bufferlist length in calculate_version
20. rgw/d4n: adding a case for iterate method, where last
part to read is smaller than chunk size.