* Now supports partial reads of blobs, and caches them inside StorageClientBase.
* IStorageClient includes methods for reading/writing TreeNode-derived classes, and caches bundle information and encoded/decoded packets internally.
* TreeWriter class can be used for packing data together into bundles. Supports creating async tasks to fence nodes being flushed rather than an explicit concept of forking child writers.
#preflight none
[CL 22192856 by Ben Marsh in ue5-main branch]
* Add configurable size for bundle cache, and disable it by default.
* Sum up sizes of directories to sync without duplicating paths of every file.
* Use ByteArrayBuilder to create segments for bundles rather than concatenating to one large array.
#preflight none
[CL 21357732 by Ben Marsh in ue5-main branch]