Throw custom exceptions on D-Bus method failures

All 3 fan applications - control, monitor, and presence
have cases where it is expected that a getProperty call
may fail because a sensor is missing.  While the applications
already handle this, the InternalFailure exception that was
being thrown by the underlying call generates log entries
that make it look like something bad happened.

The custom exceptions now being thrown do not log anything on
creation, but store all of the failing information so that
any callers could still log the info if they wanted to.

Tested: Boot a water cooled Witherspoon and see the fan presence
        and monitor applications not look like they are
        failing.  Boot a system without the fan hwmon running,
        and see fan-control-init still show the fails.

Change-Id: Ifd8ad6e3deb492bbaf33f12c7258125dce1e5ea8
Signed-off-by: Matt Spinler <spinler@us.ibm.com>
diff --git a/monitor/tach_sensor.cpp b/monitor/tach_sensor.cpp
index 5e985d0..6789ed8 100644
--- a/monitor/tach_sensor.cpp
+++ b/monitor/tach_sensor.cpp
@@ -108,6 +108,8 @@
         }
         catch (std::exception& e)
         {
+            log<level::INFO>("Not monitoring a tach sensor",
+                    entry("SENSOR=%s", _name.c_str()));
             throw InvalidSensorError();
         }