Specifically, it can accept all the VCS tag specs that head could,
making it more useful for defining stable versions that come from
VCS instead of tarballs.
A new "SoftwareSpecification" class was added to implement this.
This new class holds a "spec" for downloading a software package.
It combines the url (or head url) with the "specs" [1] that head has
been able to take.
This allows both the stable (url) and unstable (head) specification
for a software package to co-exist without stomping on each others
"specs".
[1] "specs" contain instructions on which branch/tag/revision/etc. to use
from the source repository URL.