Repositories

This patch adds an interface for “repositories”, which are collections
of package definitions and any other related objects.  The most common
repository will come from looking for a `.buzzy` subdirectory somewhere
near the current working directory; this is how you build a package from
within its source checkout, presuming that the source tree includes a
Buzzy package definition.  Other repositories will come from “links”
defined in this default repository.
Hide phases with no actions

The `bz_action_phase_perform` function now takes in a flags parameter
that lets you control how it works.  The new `BZ_ACTION_HIDE_NOOP` flag
will cause us to not print out any messages if there aren't any actions
to perform in the phase.  Without this flag, we'll print out the header
message and a "Nothing to do" message.
Repository registry

The function that loads in a filesystem repository from the current
directory now add the repository to our new repository registry.  The
`buzzy info` command now prints out the location of each repository in
the registry.  This is how we'll support linked repositories in the
future.

The `buzzy doc` command now loads in the repository registry, too, and
uses the “main” (i.e., current directory) repository, if there is one,
when printing the value of an environment variable.