psu-ng: Fixed PSU monitor app to bind/unbind device driver appropriately.

Modified bindOrUnbind function:
      Bind the  device driver when the PSU present and i2cbus-i2caddr
      does not exist. Unbind the device driver when i2cbus-i2caddr exists
      and the PSU not present.

      bindOrUnbind does not do anything when:
      * PSU device driver bind exist and the device present
      * PSU device driver bind does not exist and device not present

Added new function populateDriverName:
      Search for device driver name in all PSUs, then assign the device
      driver name to all PSUs including missing PSUs.

Testing:
    Verified in the following test, there is no bind/unbind error log.
        1 - Removed 1 PSU and powered on the BMC with 3 PSUs
        2 - Use step 1, after power on plugged in the 4th PSU and verified
            /sys/bus/i2c/drivers/-ibm-cffps/3-006b exist
        3 - Removed 2 PSUs and powered on the BMC with 2 PSUs.
        4 - Use step 3, after power on plugged in the missing PSUs, verified
            bind/Unbind /sys/bus/i2c/drivers/-ibm-cffps/3-006x for appropriate PSU.
        5 - Powered on system with 4 PSUs then removed 2 PSUs. Verified
            unbind done for appropriate PSU.

Change-Id: I325fc0dbb16f9c3b582b739e8440a74e34aae753
Signed-off-by: Faisal Awada <faisal@us.ibm.com>
diff --git a/phosphor-power-supply/psu_manager.hpp b/phosphor-power-supply/psu_manager.hpp
index 0533a95..79caa96 100644
--- a/phosphor-power-supply/psu_manager.hpp
+++ b/phosphor-power-supply/psu_manager.hpp
@@ -411,6 +411,12 @@
     void buildDriverName(uint64_t i2cbus, uint64_t i2caddr);
 
     /**
+     * @brief Find PSU with device driver name, then populate the device
+     *        driver name to all PSUs (including missing PSUs).
+     */
+    void populateDriverName();
+
+    /**
      * @brief The device driver name for all power supplies.
      */
     std::string driverName;