sweep dual-use component changes from master into 21.2
There were a number of changes done in master that never made it back into 21.2. I hope I got most of them with this MR. More specifically I added commits from:
This was mostly a straightforward cherry-pick, I only had to add AsgComponentConfig::typeAndName()
which wasn't present in 21.2, remove one case of ATLAS_THREAD_SAFE
which isn't defined in 21.2, and adjust to the old-style component factory syntax.
Since this is essentially a cherry-pick of already reviewed code it should receive a stream-lined/minimal review, i.e. please only comment on issues that actually need to be fixed as part of this sweep, please ignore any issues that would also have to be fixed in master, unless they are severe.