How does the GZip file compression algorithm work? If anyone has any documentation on this, I'd like to read it.