Ref T10604. For Git LFS, we need to compute file hashes as we accept data.
This allows a stream to be wrapped in an iterator, and an iterator to be wrapped in another iterator which does hashing.
This will ultimately let us pump data into Files without needing 100GB of memory to accept a 100GB file.