`FileStream::Release` optionally deletes `this`. This is OK because nothing
inherits from `FileStream`, but the compiler believes this is dangerous because
this class participates in an inheritance hierarchy and does not have a virtual
destructor. By giving it one, we silence the -Wdelete-non-virtual-dtor warning,
make it safer to inherit from this class in future, and make it safe to delete
a `FileStream` through an `IStream` pointer.
virtual HRESULT STDMETHODCALLTYPE Clone(
IStream **ppstm);
+ virtual ~FileStream() = default;
+
private:
FileStream(char *name, FILE *file);