control: Update config loading

Change the method used to load objects' JSON configuration where a list
of arguments specific to the object's class is given. This allows each
class to be constructed with its specific set of required arguments.
With this change, the zones require a pointer to their manager object
along with a reference to the event loop for their increment and
decrement timers. The manager object stores the cache for all zones,
each zone needs a pointer to its manager to be able to provide access
to that cache.

With the change in how the objects are created from their JSON
configuration files, loading the information into the YAML based
ZoneDefinitions structure is no longer needed.

Change-Id: I4f70cbeb3a708b985ca01a1f3df14ad78da053fb
Signed-off-by: Matthew Barth <msbarth@us.ibm.com>
diff --git a/control/json/manager.cpp b/control/json/manager.cpp
index a072f49..94a39a8 100644
--- a/control/json/manager.cpp
+++ b/control/json/manager.cpp
@@ -67,10 +67,10 @@
     setProfiles();
 
     // Load the zone configurations
-    _zones = getConfig<Zone>(bus);
+    _zones = getConfig<Zone>(false, bus, bus, event, this);
 
     // Load the fan configurations and move each fan into its zone
-    auto fans = getConfig<Fan>(bus);
+    auto fans = getConfig<Fan>(false, bus, bus);
     for (auto& fan : fans)
     {
         auto itZone =