We want to avoid loading a nested stack in memory wherever possible, since
that is known to cause memory high-water-mark issues. The grouputils
functions are among the worst offenders at doing this. Some of the data
that they return is easily obtained from an RPC call to
list_stack_resources, so swap out the implementations using nested().
Rather than simply add more utility functions, a GroupInspector class is
created that can cache the data returned. In future this will allow groups
that need to access multiple functions from the grouputils to do so without
making multiple RPC calls. (Previously, the data was cached in the group's
nested Stack.)
Change-Id: Icd35d91bce30ee36d9592b0516767ef273a9f34d
Partial-Bug: #1731349