[bisect] Fetch and print CIPD URL for the culprit artifact

The MOS `interpolate` API strips the full CIPD metadata from its
returned artifacts. Previously, this meant the bisection tool could only
report the culprit's basic MOS identifier details.

This update modifies the `bisection_controller` to dynamically hydrate
the culprit artifact by querying the MOS release info API if the CIPD
package details are missing. The fully resolved CIPD URL is now
pretty-printed at the end of the bisection.

Example output: https://paste.googleplex.com/6308830125359104

To support this:
- Exposed the `GcsClient` from `ArtifactCache` to allow the
  controller to instantiate a one-off `MOSClient`.
- Exported `CIPDPackage` from `assembly_artifact_cache` so the
  bisection test suite can mock the hydrated structs without
  triggering real asynchronous network calls.

Change-Id: Ia4c4f4e5139c682790b3321c264df1630bf56af0
Reviewed-on: https://fuchsia-review.googlesource.com/c/fuchsia/+/1531316
Commit-Queue: Jerry Belton <jcecil@google.com>
Reviewed-by: Aidan Wolter <awolter@google.com>
Fuchsia-Auto-Submit: Jerry Belton <jcecil@google.com>
4 files changed