CUniquePtr
Add a helper using of `std::unique_ptr` that allows easier wrapping of C pointer with destructors.
Remove the use of manual memory management, convert to the use of `std::unique_ptr`.
Implement the `zstdCompress` and `zstdDecompress` functions. Also implement the `ZstdCompressedOstream` which is a `llvm::raw_ostream` which compresses data on the fly.