Write the prepared pack to the supplied stream.
At first, this method collects and sorts objects to pack, then deltas search is performed if set up accordingly, finally pack stream is written.
All reused objects data checksum (Adler32/CRC32) is computed and validated against existing checksum.
@param compressMonitor progress monitor to report object compression work.
@param writeMonitor progress monitor to report the number of objects written.
@param packStream output stream of pack data. The stream should be buffered by the caller. The caller is responsible for closing the stream.
@throws IOException an error occurred reading a local object's data to include in the pack, or writing compressed object data to the output stream.