Restore recursive tap search

Fixes #28234.
GitHubGistFormula doesn't need to know the exact signature of initialize
allow factory to pass an options hash to the formula instance
ARGV.formulae can pass an options hash through to factory
decouple spec selection from ARGV
remove ARGV.filter_for_dependencies
add ARGV.spec
default to ARGV.spec
further decouple installer from ARGV
drop support for defining options as a method
initialize BuildOptions lazily
add options collection to SoftwareSpec
copy some behavior from BuildOptions into SoftwareSpec