simple refactor to facilitate running commands against given agent client
some added logging (OOIION-1991)
put INVALIDATED mark in the 'client' entry of the dict for the resource (and not overriding the whole dict for that resource) so we keep other associated information
use 'ra_client' as common key for resource client entry
no need to store the pid in the clients dicts -- they can be retrieved from the client object
some refactor to better capture operations involving invalidated children
collapse resource client dicts into one (_ra_clients)
fix OOIION-1991

use subscriber to ResourceAgentLifecycleEvent to react to resurrected child so it can be re-validated; new test: test_with_intermediate_subplatform_directly_stopped_then_restarted
remove subscription to ProcessLifecycleEvent's: now all associated logic for reacting to child agents started and stopped relies only on ResourceAgentLifecycleEvent's
update test_platform_status_terminate_and_restart_instrument_1_1 to also remove use of ProcessLifecycleEvent and instead ud ResourceAgentLifecycleEvent
Merge pull request #2218 from carueda/fix_ooiion-1991

Fix ooiion 1991: platform agents do not re-validate resurrected descendent child agent