Policy table lookup enhancements

Adds support for 2 new lookups:

1) Use the called out device path as the search modifier.
2) Use the called out FRU + the severity of the PEL error
   extracted from the ESEL metadata in the log as the
   search modifier.

If a match isn't found in the policy table with these modifiers,
then the code will search again using the existing modifier checks.

Note:
  PEL = Platform Event Log.  This is the logging standard used
        by OpenPower host firmware.  The PEL contents are in
        the ESEL data in the AdditionalData property in an
        OpenBMC error log entry.

Change-Id: I0e2f3675ece7e792f6b551a5be093351e3585eb6
Signed-off-by: Matt Spinler <spinler@us.ibm.com>
diff --git a/policy_table.hpp b/policy_table.hpp
index fb12659..a2e7346 100644
--- a/policy_table.hpp
+++ b/policy_table.hpp
@@ -26,13 +26,14 @@
     std::string ceid;
 };
 
+namespace optional_ns = std::experimental;
+
 using DetailsList = std::vector<Details>;
 using DetailsReference = std::reference_wrapper<const Details>;
+using FindResult = optional_ns::optional<DetailsReference>;
 
 using PolicyMap = std::map<std::string, DetailsList>;
 
-namespace optional_ns = std::experimental;
-
 /**
  * @class Table
  *
@@ -78,8 +79,8 @@
      *
      * @return optional<DetailsReference> - the details entry
      */
-    optional_ns::optional<DetailsReference>
-        find(const std::string& error, const std::string& modifier) const;
+    FindResult find(const std::string& error,
+                    const std::string& modifier) const;
 
     /**
      * The default event ID to use when a match in the table