HPCC-11637 Avoid multiple concourrent ECLWatch onActivity queries

Add a critical section block to allow only one thread to build
onActivity response; move the code of setting Activity response
into one function which is called after all of the response
information are collected; store the information (and information
collect time) into one WsSMC data member; reuse the information
if another Activity request comes through shortly after a recent
request.

Signed-off-by: wangkx <kevin.wang@lexisnexis.com>
/Status/Servers change frequently, e.g. every time a EclAgent starts or stops.

I don't think it will be worth caching, subscribing and reloading the whole lot.

However, the bits that are actually of interest to this routine (clusters under Software/Topology/Cluster), will not change frequently, but you wouldn't want to connect and cache each individually either.

On balance, I think the information is small enough and accessed infrequently enough (after this change) for it pull the ./Server's via matching readTargetClusterInfo as it does not.