Cater to download strategies not yielding a file

Closes #22580.

Signed-off-by: Jack Nagel <jacknagel@gmail.com>
Combine attr declarations
Decouple Resource from SoftwareSpec
SoftwareSpec tests are now Resource tests
Reimplement SoftwareSpec on top of Resource
Move formula resources to SoftwareSpec
Track initialized specs
Make top-level resources apply to all specs
Make spec-scoped resources override top-level resources
Download strategies take a resource now
Reorganize resource download methods
More useful error message for missing checksums
scala: use resources
git-flow: use resources
git-flow-avh: use resources
netcdf: use resources
docbook: use resources
Allow partial installation of resources
erlang: use resources