control: action to override a single fan in a zone - Lock fan in Zone

The override Action can only reference fans by name. Thus, Zone is
modified to apply a target lock to a specific fan given by name.
Additionally, the unlock method must pass the target value to allow
support for concurrent locks.

Signed-off-by: Mike Capps <mikepcapps@gmail.com>
Change-Id: Ic2ea81f318fb2c866198a4b24e38cc679147afc5
diff --git a/control/json/zone.hpp b/control/json/zone.hpp
index 4063bd5..d94e064 100644
--- a/control/json/zone.hpp
+++ b/control/json/zone.hpp
@@ -1,5 +1,5 @@
 /**
- * Copyright © 2020 IBM Corporation
+ * Copyright © 2022 IBM Corporation
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -216,6 +216,22 @@
     void setTarget(uint64_t target);
 
     /**
+     * Add a target lock for the specified fan.
+     *
+     * @param[in] fname - Fan to request/add the target lock
+     * @param[in] target - Target to register
+     */
+    void lockFanTarget(const std::string& fname, uint64_t target);
+
+    /**
+     * Remove target lock for specific fan.
+     *
+     * @param[in] fname - Fan to remove lock from
+     * @param[in] target- Target to de-register
+     */
+    void unlockFanTarget(const std::string& fname, uint64_t target);
+
+    /**
      * Sets and holds all fans in the zone to the target given or releases a
      * target hold resulting in the fans being held at the highest remaining
      * hold target if other hold targets had been requested. When no hold