New value interface

I've extracted out the part of the old `bz_env` type that stored values
for variables.  This now belongs to a separate `bz_value` type.  The old
“value provider” and “value set” types are now scalar values and map
values, respectively, rather than being distinct types.  I've also added
support for array values.  This results in some pretty sweeping changes
in the implementation of the environment class, but everything
downstream of that is more or less unchanged.  (The most invasive change
is that when you grab the value of a variable, you are never responsible
for freeing the result.)
Dependencies

You can now add a `dependencies` and/or `build_dependencies` variable to
your package descriptions.  If given, buzzy will ensure that those
dependencies are present when building and installing the package.  Our
pacman packager also uses the `dependencies` variable to define the
dependencies of the binary package that it produces, so that the pacman
database correctly encodes this information.
Set --work-tree when updating a git repo

Otherwise git assumes that the working tree is the current directory.
In most cases, it should be some directory in the buzzy cache.
Merge branch 'feature/deps' into develop

* feature/deps:
  Set --work-tree when updating a git repo
  Dependencies
  New value interface