Simple manifest parsing

This defines the basic provider and package structure of manifest files,
and adds a function to parse manifests starting at a project root. This
parsing is initially simple, only visiting providers defined within the
root manifest file.

A `qg package` CLI command is added to demonstrate manifest parsing.

Change-Id: I171fc21bd6299a726dd13615c070a406b85b61cc
Reviewed-on: https://pigweed-review.googlesource.com/c/pigweed/qg/+/121904
Reviewed-by: Erik Gilling <konkers@google.com>
Commit-Queue: Alexei Frolov <frolv@google.com>
10 files changed
tree: 6b86e93aa282d4791029d28a024aa5f56fa5374f
  1. qg/
  2. qg-cli/
  3. tools/
  4. .gitignore
  5. Cargo.toml
  6. rustfmt.toml