Track pileup locations

The WorkQueue now tracks the location of pileup datasets
in a workload. The handling of these datasets it's similar
to the parent data, it is required that all pileup datasets
are at a site before acquiring the work for that site. However,
since the pileup is set at a dataset-level instead of blocks.
It is required that just a block is at the site for the dataset
to be considered "at the site". If the pileup is not at any
of the valid sites (after white/black lists) then the work
will wait in Available until the datasets/blocks are transferred.

Fixes #3733