Allow factory to pass an options hash to the formula instance
Decouple spec selection from ARGV entirely
Add ARGV.spec and use it as the default
Drop support for defining options as a method
Initialize BuildOptions lazily
Move some behavior from BuildOptions into SoftwareSpec