Add target interface for fan control

Current fan control assumes the use of the FanSpeed interface for fan
targets.
For fans controlled by pwm, FanPwm interface is added.

This commit adds "target_interface" config parameter, so that user can
specify the interface for the fan targets.

E.g.

  - inventory: /system/chassis/motherboard/fan0
    cooling_zone: 0
    cooling_profile: air
    sensors:
      - fan0
    target_interface: xyz.openbmc_project.Control.FanPwm

The config is optional and defaults to FanSpeed, so the current code
will not be affected.

Tested: Use this config on Romulus, ensures the fan control sets
        target on FanPwm interface and works fine.

Change-Id: I73adccaa770d657b5d7aaeb307917f89588524de
Signed-off-by: Lei YU <mine260309@gmail.com>
diff --git a/control/example/fans.yaml b/control/example/fans.yaml
index 629c502..2583256 100644
--- a/control/example/fans.yaml
+++ b/control/example/fans.yaml
@@ -9,12 +9,15 @@
 #   cooling_zone: [The cooling zone number for the fan]
 #   cooling_profile: [The cooling profile for the fan]
 #   sensors: [The list of sensors for this fan]
+#   target_interface: [The interface implemented by the fan target.
+#                      Default is xyz.openbmc_project.Control.FanSpeed]
 
 #The cooling zone, a number, and the cooling profile, a string,
 #have to match the corresponding values in the fan zone yaml
 #so the fans can be merged into the zone definition.
 
-#Example entries for 2 fan system:
+#Example entries for 2 fan system where fan0 uses default FanSpeed and
+#fan1 uses FanPwm:
 #fans:
 #  - inventory: /system/chassis/motherboard/fan0
 #    cooling_zone: 0
@@ -26,3 +29,4 @@
 #    cooling_profile: air
 #    sensors:
 #     - fan1
+#    target_interface: xyz.openbmc_project.Control.FanPwm