Some of the code paths which use ListMembers to list the members of a
group already have a loaded instance of a group. That instance can be
directly used instead of looking it up from the cache again.
Similarly, GroupControl instances can be reused instead of creating
them again.
As several new public methods needed to be introduced to allow
passing on the existing group or GroupControl instances, we took the
opportunity to clearly distinguish between lookups of direct members
and transitive ones. The lookup algorithm was kept as is.
Change-Id: Id3ec2667704ec63f4a1468d87e9f3830a8f0c45a