presence: Track missing fans with timers

Fill in the ErrorReporter class to track fan presence status using Timer
objects.  The timers will be started if power is on when fans are
removed.  If a fan is replaced before the timer expires, or if the
system powers off before the timer expires, the timer will be stopped.

The function called when a timer expires is currently stubbed, but
eventually it will create an event log.

The class watches presence changes by watching the Present property for
the fans in the inventory.  Technically, it could watch an internal
status, but this method was chosen because
a) It makes testing easier, so presence changes can be forced using
   busctl as opposed to physically removing hardware.
b) There wasn't really a good place to hook in presence state watches.
c) The application would already crash anyway if the inventory service
   wasn't working for some reason.

Signed-off-by: Matt Spinler <spinler@us.ibm.com>
Change-Id: Ib0524b9b8335414de6b52ce159771eba95248441
3 files changed