Support single- and multiple-target VTS's.

Previously, each target got wrapped in a VersionedTargetSet, but we relied
on the assumption that it was alone in its set until later, when we
grouped the single versioned targets into multi-target sets for
compilation.

This makes this single- vs. multi-target VersionedTarget distinction more
explicit and allows for more complicated logic elsewhere about which
targets to group together.

Auditors: benjy