Fix IO worker tolerance of errors

If an _io_apply encounters an exception, the io worker entirely would fall apart.  Encompass the key entry
points in try clauses to allow the thread to keep working and the dependent IPMI object to have their
waiter acknowledged.  It's still considered a grave bug for this to ever occur, but at least
the application would carry on.

Change-Id: I61b0797025b25c6d9d3e86a5110603a6fc2d67fb