Add support for sub-products when updating pools during refresh.

Includes a sizable refactor of the update pools process. Replace mixed
use of "check for updates then apply them" and "check for updates and
apply them", switched everything to just pass through the data once and
update as we go, recording if any changes were found.