HBASE-6571 Generic multi-thread/cross-process error handling framework (Jesse Yates)

The idea for a generic inter-process error-handling framework came
from working on HBASE-6055 (snapshots). Distributed snapshots require tight
time constraints in taking a snapshot to minimize offline time in face of
errors. However, we often need to coordinate errors between processes and
the current Abortable framework is not sufficiently flexible to handle the
multitude of situations that can occur when coordinating between all region
servers, the master and zookeeper. Using this framework error handling for
snapshots was a simple matter, amounting to maybe 200 LOC.
    
This seems to be a generally useful framework and can be used to easily add
inter-process error handling in HBase. The most obvious immediate usage is
as part of HBASE-5487 when coordinating multiple sub-tasks.



git-svn-id: https://svn.apache.org/repos/asf/hbase/branches/hbase-7290@1445770 13f79535-47bb-0310-9956-ffa450edef68