Support compression. Uses System.IO.Compression where available, otherwise it falls back to ICSharpCode.