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.

Revise based on review comments:
(1) Make ActivityInfo cache time configurable (default to 10 seconds);
(2) Remove extra code for ActivityInfo object clear; (3) Create a new
method getActivityInfo: check whether cached ActivityInfo is valid. If
not, update the cache with latest Activity Info. Return the valid cache;
(4) Response is populated outside of the getActivityInfo().

Cache activity info without version check, etc:
The code is revised to cache activity info without checking
version / user access and build Activity response using the
version and user acess control.

Revise based on review comments

Signed-off-by: wangkx <kevin.wang@lexisnexis.com>