Register Tools declared in ToolHandleArray in parent Algorithm/AlgTool
data deps of Tools in ToolHandleArrays are not pushed to parent Alg/AlgTool
need to add a declareProperty(... ToolHandleArray ...) to Algorithm and AlgTool, and add all ToolHandleArrays thus declared to a container that gets processed during initToolHandles. In order to avoid adding tools from Arrays that haven't been retrieved, we have to add a bool flag to the GaudiHandleArrayBase to detect if it's been retrieved. there's a bit of ugliness in extracting a ptr to an IAlgTool from the untemplated GaudiHandleArrayBase, as we have to explicitly retrieve the tool from the ToolSvc by name, but since it's already been retrieved when the Array gets retrieved, we won't be doing any new creations.
I believe that the testing for whether the retrieved tool is public or private is redundant, as I don't think you can put a Public tool into a Private ToolHandleArray (at least you can't seem to do so in ATLAS), but I left it in just in case.
See GAUDI-1190