HBASE-7206 ForeignException framework v2 (simplifies and replaces HBASE-6571)

ExternalException replaces previous ErrorHandling framework
- Barrier protos  (likely remove)
- Error Handling protos
- Prepping ExternalException for review

Remove Barrier protos - ExternalException
Removing Barrier proto - TestExernalException
Minor fixes to ExternalExceptions
Renamed StackTraceElement to StackElementTraceMessage
Folded ExternalExceptionSerializerUtil into ExternalException
ExternalException cleanup
- add serialize method (prevent exposure of ExternalExceptionMessge)
- change some publics to package exposure
Made ExternalException stack traces closer to normal stack trace convention
fixed  a minor import

[err] Renamed ExternalExceptions to ForeignExceptions
[err] changed helper.
[err] docs nits
[err] updated protobuf
[err] removed weak refernce junk.
[err] Added peering notes
HBASE-7208 Transition Offline Snapshots to ExternalExceptions

DisabledTableSnapshot and Master refactors
  Updates to TestSnapshotManager
  SnapshotManager Updates for Offline Snapshot
  Base class for Master side Snapshot Request Handlers
  Fixes for TestSnapshotFromMaster
  Interfaces that IMO serve little purpose
  HBaseSnaphot Exceptions mods (do we need these?)
  Convert tasks to Runnables
  Snapshot Tasks
  Get rid of SnaphostExceptionSnare
  Refernce task and test
  Add touch to FSUtils
  Snapshot log utils (duplicate?)
  More Utils - snapshot reference, Take snapshot utils
  Touch in TestFSUtils
  Reference updates (duplicate?)
  new FS Filters and utils like touch.
  Fixes for breakup portion

Removing duplicated  code.
Remove old errorhandling framework
Removed Aborting (really this is just wrapping a boolean)
Merged Finish/Finishable with Stopped.
Removed Finish/Finishable.
Remove TestSnapshotUtils dupe
- Reference used to have content but now is just the file name.
Remove unused changes in Reference
Remove SnaphsotLogUtils (code is in TakeSnapshotUtils)
Remove touch since it is identical to fs.createNewFile
Remove Procedure coordinator references

Removed ExecutorService from consturctor list of SnapshotManager (part of MasterServices)
Back to getSnapshotManagerForTesting
Moved bulk of isSnapshotCompleted into SnapshotManager
Fixing nits
Renamed TableSnapshotHandler to TakeSnapshotHandler
Changed SnapshotTask to Callable<Void> from Runnable
Fixed TestSnapshotFromMaster archiver test
Cleanups of TableInfoCopyTask
Cleanup nits in exceptions
Minor nit fixes to TestsSnapshotFromMaster, TestSnapshotManager and TestCopyRecoveredEditsTask
Remove duplicate TestWALReferenceTask
Master side TS snapshot fixes from Matteo's review.
used SnapshotManager's isSnapshotCompleted method instead of having one in HMasteR
Move Snapshot FS code (into SnapshotManager).
- This really makes the exception handling story much simpler.
Move constant from SnapshotDescriptionUtil to SnapshotManager.

Cleanup refactor nits
Rely on Callable exception throwing in ReferenceServerWALsTask
Remove HBaseSnapshotException.getExceptionAsSnapshotException
Cleanup ExternalExcpetion refactor

Comments and nits to TakeSnapshotHandler refactor
Removed Stoppable interface from SnapshotSentinel.
Remove cancel from DisabledTableSnapshotHandler
Rename snapshot in TakeSnapshotHandler to snapshotRegions
Moved completeSnapshot from SnapshotManager to TakeSnapshotHandler
Removed test that broke because of completeSnapshot move. (was a new test anyway)
Merged stop and with cancel and added Throwable argument.

Fix Spacing nits
Cleaned up TODOs in TakeSnapshotHandler
Re-added restore handler cleanup

HBASE-7208 review cleanups from ted's review of v1.
[off] remove SnapshotManager from SnapshotManager
[offline] Remove snapshot manager form take snapshot handler
[offline] remove monitor argument in TakeSnapshotHandler.
[offline] Fix npe problem with take snapshothandler

[offline] added inheritDoc for a jesse's nit
Renamed timer timeoutinjector in DisabledTablesnapshotHandler
[offline] External -> Foreign
[offline] external -> Foreign: tasks.
[offline] external -> foreign - restoreSnapshotHelper
HBASE-7212 Globally Barriered Procedure Mechanism

Removing Barrier proto - Procudure.
Fixed race condition in TestZKProcedure
Updates to procedure to take advantage of better method names.
Tighten up ProcedureMember's use of ExternalException
Update Procedure to not use ExternalExceptionMessage and to use updated ExternalException

Renamed ProcedureBuilder to ProcedureFactory Fixed spacing nits in Procedure code.
Cleanup for procedurebuilder->factory change.

[proc] remove releaseBarrier from Subprocedure.
Fix spacing nits
Repackage procedure to o.a.h.h.procedure.
Remove latches and cleanup method only used by testing from Procedure
Fixed TestProcedure positive cases so that they are not flakey
Renamed barrier* call back to barrier*ByMember
Cleaning up Procedure:
 Rename duringBarrierLatch -> acquiredBarrierLatch
 Simplify error handling.
Renamed Procedure getErrorCheckable to getErrorMonitor.
Remove wrap method from Procedure
Got rid of Procedure.getCompletedLatch
Removed silly helper methods with receiveError calls
Renamed sendSatisfiedBarrier -> sendReachedBarrier
Removed some methods that exposed latches and created new higher level methods.

Added isRemote to ExternalException.
Procedure is now clean.
[err] Procedure is now clean
tightened ProcedureCoordinator
Comment fix in ExternalException to remove a circular doc dependency on Procedure
ProcedureCoordinatorComms now clean.
Got rid of silly threads counting methods in ProcedureMember
Made ProcedureMember.getComms() package viz.
Cleanup ProcedureMember
- reorganized file for better readability.
- merged runSubprocedure into submitSubprocedure
Moved ExternalException serialization into ZKProcedureMemberComms
Trying to decide if I should cull this controllerConnection failure code.  (I think the answer is, if in doubt, remove).
Git rid of error helpers.
Remove Procedure import from ExternalExceptionDispatcher.
Going to tackel subprocedure local exception
Cleaned up TestProcedureMemeber and Subprocedure.cancel.
Make Subprocedure abstract
Cleaned up ProcedureMemberComms and Subprocedure
Cleaned up ZKProcedureUtil.
Cleanup of the ZK parts of procedure
Fix some nits in tests.
used import static for mockito in TestProcedure
Added TODO about unused ZKProcedureCoordintorComms#sendAbortToMemebers
Cleaned up TestProcedureMemeber.

hbase-7212 updates from ted's review.
After ted review, procedure clean.
Stack + Ted's review updates of Procedure
Added Comms->Rpcs RPC files.
I'm prove variable name for procedureDescription -> procedureType in ZKProcedureCoordinatorComms
Remove nodeName/coordName from ProcedureCoordinator.
handling controllerConnectionFailure wonkyness
Cleaned up nomenclature in ProcedureCoordinatorRpcs and ProcedureFactory
More nomenclature cleanup in procedure coordintator
cleanup procedure member
cleaned up nomencalture of subprocedure
Rename ZKProcedureCoordinatorComms -> Rpc fixed naming in zkprocedurecoordinatorrpcs
Fixed naming in ZKProcedureMemberRpcs
add files for zk rpcs rename
Fix spacing nits.

Updated procedure to use WeakValueMapping
Used WeakValueMapping in ProcedureMember
Added tests for Weak value mapping.

[proc] External -> Foreign
HBASE-6866 Timestamp snapshots [regionserver side]

Timestamp Snapshot on the region
  RegionServer side manager and plumbing
  SS Desc utils nits.
  Flush region ts snapshot regionserver side.
  Online SnapshotSubprocedure
  Fixes for making rs side compile

[rs] Remove releaseBarrier subproc no-op
[rs] repackage procedure
[rs] rename externalErrorMonitor -> monitor
[ts] renamed externalErrorMonitor -> monitor

[rs] procedure is now clean.
[rs] nit fix for online exception handling.
[rs] change from localOperationException -> cancel.
[rs] changed constructor args of Subprocedure

[rs] fix spacing nits.
[rs] Comms->Rpcs
[rs] clean up procedure member
[rs] Fixed naming.

[rs] Folded CheckForSwappedStores into FlushRegionAtTimestampTask

[rs] External -> foreign
HBASE-6866 Timestamp Snapshots [master side]

Master side online table snapshot plumbing
  Wire in and test online snapshots
  Wire in Enabled TableSnapshots
  Remove TestSnapshotFromServer -- requires injection framework
  Re add procedure stuff to SnapshotManager
  FS protos

Remove cancel from EnabledTableSnapshotHandler

[master] Repackage Procedure
[online] renamed Procedure getErrorCheckable -> getErrorMonitor

[hm] rename Comms -> RPC
[hm] remove node name from ProcedureCoordinator
[hm] comms -> rpc

[hm] Spacing fixes in EnabledTableSnapshotHandler
[hm] remove manager from inherititing constructor of TakeSnapshotHandler
[hm] spacing nits
[hm] handle changed constroctur (remove dispatcher argument)
[hm] removed unused newOnlineTableSnapshotHandler

[hm] external -> foreign
Experimental Log roll snapshot subprocedure
- Logrollsnapshot uses external->foreign
Merge branch 'snapshots-work' into snapshot-work-1205