initialize BuildOptions lazily
add options collection to SoftwareSpec
copy some behavior from BuildOptions into SoftwareSpec