We need a mechanism to save an HDF5Array-based (or more generally
DelayedArray-based) SummarizedExperiment object to disk.

- The object can have more than 1 assay. Even though most of the time these
  assays are either all in memory (e.g. ordinary arrays or data frames) or all
  on disk and using the same backend (i.e. all HDF5-based DelayedArray
  objects), they can be a mix of in-memory and on-disk assays. Even a given
  assay can use more than 1 kind of on-disk backend. For example it could be
  the result of adding an HDF5-based DelayedArray object with a DelayedArray
  object based on another backend. Since the addition of DelayedArray objects
  is delayed, the result of this addition is a DelayedArray object with mixed
  backends.

- Standard mechanisms save() and saveRDS() cannot handle this complexity.

- We need a mechanism that produces several files: one .rda (or .rds)
  file containing the result of calling save() (or saveRDS()) on the
  object + all the files (e.g. HDF5) containing the on-disk assay data.
  The files containing the on-disk assay data can be a mix of HDF5 files
  and other formats.
  How should these files be bundled together? By putting them together in a
  destination folder? By creating a tarball of this folder? Should the creation
  of the tarball be left to the user or should the save function create it?

- Should the on-disk assays with delayed operations on them be "realized"
  before the SummarizedExperiment object is saved to disk? Doing this has
  some significant advantages:
    (1) It "simplifies" the object: it reduces the number of files needed to
        store the on-disk assay data (only 1 file per on-disk assay).
    (2) It relocates and reduces the size of the on-disk data needed to
        represent the object.

- Should the in-memory assays be converted into on-disk assays before saving?
  Should this be controlled by the user?