[garnet] Reland "Remove MakeCopyable dependencies"

This reverts commit 077444b5ce477a01a0d268f82e0a0cb123b2c20b.

Reason for revert: relanding (revert revert) after resolving build error with merge of https://fuchsia-review.googlesource.com/c/peridot/+/245012

Original change's description:
> Revert "[garnet] Remove MakeCopyable dependencies"
>
> This reverts commit e5dee7e7d47a9d28092ad00c45f50192af4b18a5.
>
> Reason for revert: this CL breaks peridot (fxl::Closure no longer has
> the same semantics), which prevents garnet from rolling.
>
> Original change's description:
> > [garnet] Remove MakeCopyable dependencies
> >
> > [Confirmed this compiles under both x64 and arm64]
> >
> > This change replaces many std::function references with
> > the new fit::function, allowing functions to be passed with
> > move-only semantics, which is more efficient than "copy",
> > and safer than pass-by-reference. It also allows lambdas to
> > include move-only objects without requiring the MakeCopyable
> > workaround.
> >
> > Note that this covers all of garnet (except for eventually
> > removing MakeCopyable itself). Changes are forthcoming in
> > topaz and peridot.
> >
> > Issue: ZX-3289
> > Test: No behavior change
> > Change-Id: I3fbc402e37652f0dac807441b00ba935cf403a93
>
> TBR=abarth@google.com,richkadel@google.com
>
> Change-Id: Idce39513309f4dd84d2abfbb63891b74030ee43f
> No-Presubmit: true
> No-Tree-Checks: true
> No-Try: true
> Issue: ZX-3289

TBR=kulakowski@google.com,vardhan@google.com,abarth@google.com,richkadel@google.com

Change-Id: Ia310a86b059ee1789ce6950ab19e7344b378c34e
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Issue: ZX-3289
86 files changed