FormulaInstaller: allow formulae to pass options to deps

Formulae can now pass build options to dependencies. The following
syntax is supported:

  depends_on 'foo' => 'with-bar'
  depends_on 'foo' => ['with-bar', 'with-baz']

If a dependency is already installed but lacks the required build
options, an exception is raised. Eventually we may be able to just stash
the existing keg and reinstall it with the combined set of used_options
and passed options, but enabling that is left for another day.
FormulaInstaller: consolidate ARGV munging

There are several steps required to construct the ARGV that is passed to
the spawned build process. Factor them out into a separate method.

Signed-off-by: Jack Nagel <jacknagel@gmail.com>
missing: ignore unused optional and recommended deps

Signed-off-by: Jack Nagel <jacknagel@gmail.com>
uses: utilize modern dependency API

Signed-off-by: Jack Nagel <jacknagel@gmail.com>
upgrade: offload dependency expansion to FormulaInstaller

Now that FormulaInstaller does dependency expansion the _right_ way,
avoid duplicating the logic in upgrade. Instead, offload it to the
installer, which will generate an exception in check_install_sanity that
we can safely ignore when formulae in the outdated list are upgraded as
part of the dependency tree of another outdated formula.

Signed-off-by: Jack Nagel <jacknagel@gmail.com>
Replace usages of recursive_deps with recursive_dependencies

Signed-off-by: Jack Nagel <jacknagel@gmail.com>
Add "depends_on :clt"

Signed-off-by: Jack Nagel <jacknagel@gmail.com>
Tag Xcode and CLT requirements as build-time

This way they can be skipped when installing bottles.

Signed-off-by: Jack Nagel <jacknagel@gmail.com>