Remove circular dependencies in regulator includes

Remove the circular dependencies that currently exist among regulator
include files.  Add forward declarations in two key includes that cause
the issue.

This requires the creation of a new source (.cpp) file and as a result a
new static library.

Change-Id: Ib136adf0a0cf6b30781b64cfecede0fbd50e13f7
Signed-off-by: Shawn McCarney <shawnmm@us.ibm.com>
diff --git a/phosphor-regulators/src/actions/action_environment.hpp b/phosphor-regulators/src/actions/action_environment.hpp
index e519fa5..eb66981 100644
--- a/phosphor-regulators/src/actions/action_environment.hpp
+++ b/phosphor-regulators/src/actions/action_environment.hpp
@@ -15,9 +15,7 @@
  */
 #pragma once
 
-#include "device.hpp"
 #include "id_map.hpp"
-#include "rule.hpp"
 
 #include <cstddef> // for size_t
 #include <stdexcept>
@@ -26,6 +24,10 @@
 namespace phosphor::power::regulators
 {
 
+// Forward declarations to avoid circular dependencies
+class Device;
+class Rule;
+
 /**
  * @class ActionEnvironment
  *
@@ -198,7 +200,7 @@
     /**
      * Mapping from string IDs to the associated Device and Rule objects.
      */
-    const IDMap& idMap{};
+    const IDMap& idMap;
 
     /**
      * Current device ID.