FormulaInstaller: don't install bottle if options were passed
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: construct new ARGV from an Options collection

The array of options that is passed to the spawned build process is a
combination of the current ARGV, options passed in by a dependent
formula, and an existing install receipt. The objects that are
interacting here each expect the resulting collection to have certain
properties, and the expectations are not consistent.

Clear up this confusing mess by only dealing with Options collections.
This keeps our representation of options uniform across the codebase.

We can remove BuildOptions dependency on HomebrewArgvExtension, which
allows us to pass any Array-like collection to Tab.create. The only
other site inside of FormulaInstaller that uses the array is the #exec
call, and there it is splatted and thus we can substitute our Options
collection there as well.
missing: ignore unused optional and recommended deps
uses: utilize modern dependency API
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.
Replace usages of recursive_deps with recursive_dependencies
Add "depends_on :clt"
Tag Xcode and CLT requirements as build-time

This way they can be skipped when installing bottles.
Fix Dependencies -> Array conversion
upgrade: use standard Tab accessor

Yes, the formula object does refer to a version that has not yet been
installed, but we were not looking into Formula#prefix, but #linked_keg,
which is version agnostic (since the original patch was committed, we
Tab#for_formula learned to look into #opt_prefix as well). The rest of
the logic is already embedded in the Tab accessors.
audit: warn about nonexistent options passed to deps
mtr: use new optional deps support

Signed-off-by: Jack Nagel <jacknagel@gmail.com>
postgresql: use new recommended deps support

Signed-off-by: Jack Nagel <jacknagel@gmail.com>
gnome-doc-utils: depend on libxml2 'with-python'

Signed-off-by: Jack Nagel <jacknagel@gmail.com>
subversion: universal is now passed to deps automatically
vtk: use current tab API
pdf2svg: depends on poppler with-glib
diffpdf: depends on popper with-qt4
duplicity: make universal optional

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