[storage] Forward GPT partitions to drivers

Adds a block-relay component which is responsible for forwarding GPT
partitions to the driver framework by adding DF nodes for each
partition.

Only partitions which are configured in the board configuration (i.e.
those which have semantic labels) are forwarded.  We could further
restrict this with an additional allowlist if we so desired.

To add DF nodes, I added a "node" protocol connector to the
fuchsia.hardware.block.volume.Service FIDL service, which is the FIDL
service exported by block device drivers.  Partition nodes are added as
children of the block device which they are contained in, which ensures
they appear in a reasonable place in the driver topology.

For example, a partition inside a GPT-formatted ramdisk might appear
here in the topology:

```
[root] pid=82564191 fuchsia-boot:///platform-bus#meta/platform-bus.cm
  [sys] pid=None owned by parent
    [platform] pid=None owned by parent
      [board] pid=None unbound
      [ram-disk] pid=82564824 fuchsia-boot:///dtr#meta/ramdisk.cm
        [ramctl] pid=None owned by parent
          [v2] pid=82565532 fuchsia-boot:///dtr#meta/ramdisk-v2.cm
            [ramdisk-0] pid=None owned by parent
              [my-partition] pid=None unbound
```

Currently, fshost forwards a single Node instance to block-relay for the
block device which contains the system GPT (which fshost treats as a
singleton).  Block-relay assumes that all partitions are children of
this parent node.  If we wanted to support multiple parent block devices
down the road, that would have to change (but so would semantic labels
and probably other things).

Bug: 437443063
Fixed: 438829467
Change-Id: I6ea438ad2ef2a9c4a523a8878bdabae1861ce10c
Depends-on: Ic47b2179b8ed9a1d998dbc4ef82e936a5120af6f
Reviewed-on: https://fuchsia-review.googlesource.com/c/fuchsia/+/1452656
Reviewed-by: Stephen Demos <sdemos@google.com>
Reviewed-by: Suraj Malhotra <surajmalhotra@google.com>
Reviewed-by: Mike Comfoltey <comfoltey@google.com>
API-Review: Suraj Malhotra <surajmalhotra@google.com>
Dependencies-Satisfied: CL Deps Checker <cl-deps-checker@fuchsia-internal-service-accts.iam.gserviceaccount.com>
Reviewed-by: Novin Changizi <novinc@google.com>
Reviewed-by: Aidan Wolter <awolter@google.com>
Commit-Queue: James Sullivan <jfsulliv@google.com>
46 files changed