HBASE-12550 Check all storefiles are referenced before splitting

Summary: If there are bugs in HDFS move and/or create we should protect against them by making sure that all files referenced end up in split daughters.

Test Plan: Unit tests cover splits pretty well

Subscribers: matteobertozzi

Differential Revision: https://reviews.facebook.net/D29373
HBASE-12471 Task 4. replace internal ConnectionManager#{delete,get}Connection use with #close, #createConnection (0.98, 0.99) under src/main/java

Move from HConnection to ClusterConnection or Connection
Use unmanaged connections where we use managed previous
(used the jdk7 https://docs.oracle.com/javase/7/docs/technotes/guides/language/try-with-resources.html idiom).

In ZKConfig, synchronize on Configuration rather than make a copy.
Making a copy we were dropping hbase configs in certain test context
(could not find the zk ensemble because default port).

In tests, some move to the new style connection setup but mostly
fixes for premature connection close or adding cleanup where it
was lacking.

Conflicts:
	hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestMultiParallel.java
	hbase-server/src/test/java/org/apache/hadoop/hbase/mapreduce/TestLoadIncrementalHFilesSplitRecovery.java
	hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestDistributedLogSplitting.java
	hbase-server/src/test/java/org/apache/hadoop/hbase/replication/TestMultiSlaveReplication.java
	hbase-server/src/test/java/org/apache/hadoop/hbase/replication/TestReplicationEndpoint.java
HBASE-12471 Task 4. replace internal ConnectionManager#{delete,get}Connection use with #close, #createConnection (0.98, 0.99) under src/main/java
HBASE-12495 Use interfaces in the shell scripts (solomon duskis)

Conflicts:
	hbase-shell/src/main/ruby/hbase/quotas.rb
HBASE-12550 ADDENDUM Make HRegion's api not change.
HBASE-12569 Update scripts to control MaxDirectMemorySize via env vars

Signed-off-by: stack <stack@apache.org>

Conflicts:
	src/main/docbkx/book.xml
    HBASE-12404 Task 5 from parent: Replace internal HTable constructor use with
    HConnection#getTable (0.98, 0.99)

    Backport

    Replaced HTable under hbase-*/src/main/java. Skipped tests. Would take
    till end of time to do all and some cases are cryptic. Also skipped
    some mapreduce where HTable comes through in API. Can do both of
    these stragglers in another issue.
    Generally, if a utility class or standalone class, tried to pass in a
    Connection rather than have the utility or standalone create its own
    connection on each invocation; e.g. the Quota stuff. Where not possible,
    noted where invocation comes from... if test or hbck, didn't worry about
    it.
    Some classes are just standalone and nothing to be done to avoid
    a Connection setup per invocation (this is probably how it worked
    in the new HTable...days anyways). Some classes are not used:
    AggregationClient, FavoredNodes... we should just purge this stuff.
    Doc on what short circuit connection does (I can just use it...
    I thought it was just for short circuit but no, it switches dependent
    on where you are connecting).
    Changed HConnection to super Interface ClusterConnection where safe (
    internal usage by private classes only).
    Doc cleanup in example usage so we do new mode rather than the old
    fashion.
    Used java7 idiom that allows you avoid writing out finally to call close
    on implementations of Closeable.
    Added a RegistryFactory.. moved it out from being inner class.
    Added a utility createGetClosestRowOrBeforeReverseScan method to Scan
    to create a Scan that can ...
    Renamed getShortCircuitConnection as getConnection – users don't need
    to know what implementation does (that it can short-circuit RPC).
    The old name gave pause. I was frightened to use it thinking it only
    for short-circuit reading – that it would not do remote too.
    Squashed commit of the following:
HBASE-12128 Cache configuration and RpcController selection for Table in Connection
HBASE-12581 TestCellACLWithMultipleVersions failing since task 5 HBASE-12404 (HBASE-12404 addendum)
HBASE-12584 Fix branch-1 failing since task 5 HBASE-12404 (HBASE-12404 addendum)
HBASE-12563 After Starting up mini hbase cluster, Real Configuration of Cluster never set to HBaseTestingUtility (Talat UYARER)
HBASE-12518 Task 4 polish. Remove CM#{get,delete}Connection

Remove deleteConnection from everywhere except the two tests that ensure
it does the right thing and from HCM and CM themselves.

Undoes deleteConnection from tests and from the web ui
Revert "HBASE-12563 After Starting up mini hbase cluster, Real Configuration of Cluster never set to HBaseTestingUtility (Talat UYARER)"

Broke the build. TestZooKeeper doesn't pass.

This reverts commit 2e9597ffb790cf23699f1f85777403b436c96ab9.