Minimize service name mapper lookups

Retrieve the service names from the cached dataset within the zone for a
path and interface, updating the cache when not found. This is used when
initializing property values and service name owners.

Additional performance enhancements to use `GetSubTree` prior to
processing a set speed event will be included under
openbmc/openbmc#2911. This will keep unnecessary `GetSubTree` lookups
from occurring for paths/interfaces that don't exist to further improve
upon initializing properties fan control is defined to use.

Tested:
    First path updates service name cache for all paths sharing the same
interface
    First missing interface on a path updates service name cache for all
paths sharing that interface
    Verify mapper lookups for X number of paths sharing the same
interface is reduced to (X-(X-1))
    NameOwnerChanged events read/update the same set of service name
cache

Change-Id: Ia235b36ba5ae8cda38342d7521f3d87080c2970a
Signed-off-by: Matthew Barth <msbarth@us.ibm.com>
diff --git a/control/functor.hpp b/control/functor.hpp
index 06e8db9..8e85fcb 100644
--- a/control/functor.hpp
+++ b/control/functor.hpp
@@ -107,7 +107,9 @@
         {
             try
             {
+                auto service = zone.getService(_path, _iface);
                 auto val = util::SDBusPlus::getProperty<T>(bus,
+                                                           service,
                                                            _path,
                                                            _iface,
                                                            _property);
@@ -306,9 +308,7 @@
             try
             {
                 // Initialize NameOwnerChanged data store with service name
-                name = util::SDBusPlus::getService(bus,
-                                                   _path,
-                                                   _iface);
+                name = zone.getService(_path, _iface);
                 hasOwner = util::SDBusPlus::callMethodAndRead<bool>(
                         bus,
                         "org.freedesktop.DBus",