ACCUMULO-2988 Add check for older versions

We need to detect
That the version is one four
To do an upgrade
ACCUMULO-1010 Support upgrades from 1.4 to 1.5

Description: Add steps necessary to move a zk from 1.4 state to 1.5.
  This leaves it in a good state to be picked up by the rest of the
  1.6 upgrade path.
Author: kturner
Ref: ACCUMULO-2988

Cherry picking caused a huge mess and it was simpler to manually select
the parts of the upgrade code that we needed based on the 1.5.1 tag.

Gathered from commits 317c669, aa6b4309, and 8811859.
ACCUMULO-1264 move !METADATA file delete markers

Description: Move the !METADATA file delete markers out of the
  !METADATA table and to the root table on upgrade.
Author: Eric Newton
Ref: ACCUMULO-2988

Modified from commit 5416eef
ACCUMULO-2988 Upgrade from 1.4 -> 1.6.

* add a README section
* add log messages around upgrade actions
* change 1.4 -> 1.5 upgrade action around compaction cancellation to use 1.6 method of enumerating table ids.

Author: Sean Busbey <busbey@cloudera.com>
ACCUMULO-2988 Clean up of upgrade related constants and checks.
Merge branch '1.6.1-SNAPSHOT'
ACCUMULO-2694 Fix handling of tablet migrations for offline tables.

* Adds a funtional test that fails due to not rebalancing
* Fix master to clear migrations when it learns that a table has gone offline
* Update master to periodically clean up migrations for offline tables
* Fix balancers to make sure they log if they can't balance.
ACCUMULO-2464 Reflect around CredentialProvider* to pull sensitive configuration values not from plaintext-sources

The CredentialProvider classes are a new introduction in 2.6.0 designed to provide a common
interface, via Hadoop Common, that downstream processes can leverage which are "more secure"
than storing them in a plaintext-readable Configuration file (like the common practice of
Hadoop Configuration "site" XML files).

CredentialProviderFactoryShim uses reflection to:

1) Find if these new classes are available
2) Instantiate them, and the Methods we need to invoke
3) And, invoke them with the given information

This provides us with a backwards and forwards compatibile class that allows early
adopters to use 2.6.0 features, and, when >=2.6.0 is the "norm", allow users to continue
to use <2.6.0 transparently.
Merge branch '1.6.1-SNAPSHOT'
ACCUMULO-2464 Documentation for how to configure CredentialProviders for sensitive configuration redirection.
Merge branch '1.6.1-SNAPSHOT'

Conflicts:
	docs/src/main/asciidoc/chapters/administration.txt
ACCUMULO-3039 demoted message from WARN to DEBUG
ACCUMULO-3039 demoted message from WARN to DEBUG
Merge branch '1.6.1-SNAPSHOT'
Merge branch '1.5.2-SNAPSHOT' into 1.6.1-SNAPSHOT

Conflicts:
	server/base/src/main/java/org/apache/accumulo/server/master/balancer/ChaoticLoadBalancer.java
	server/base/src/main/java/org/apache/accumulo/server/master/balancer/TabletBalancer.java
	server/src/main/java/org/apache/accumulo/server/master/Master.java
	server/tserver/pom.xml
	test/system/auto/stress/migrations.py
ACCUMULO-2694 update migration cleanup for 1.6 branch.

- manually redo changes to Master
- convert python functional test to an IT
-- Add programmatic access to MasterMonitorInfo to MiniAccumuloClusterImpl
-- Make SystemCredentials work with MiniAccumuloClusterImpl
Merge branch '1.6.1-SNAPSHOT'

Conflicts:
	server/base/src/main/java/org/apache/accumulo/server/master/balancer/ChaoticLoadBalancer.java
ACCUMULO-2694 fix dependency in test module for master branch.

the test module code for replication made use of commons-lang without
declaring the dependency, relying on a transitive inclusion from
commons-configuration.

since the test for balancing in the face of an offline table added
commons-lang at test scope, the transitive inclusion was lost and
compilation fails.
ACCUMULO-2694 Ensure that the newly created table is assigned before continuing.

A table can be successfully created, but its tablets not yet assigned. There
was a race condition in the test where getMasterMonitorInfo was called
before the tablets for the TEST_TABLE were created. This made it appear that
the table did not exist.

We can mitigate the race condition by trying to read from our TEST_TABLE
before returning from the setup method. This ensures that the tablet for
our table is online and we should get the expected state from the test.
Merge branch '1.6.1-SNAPSHOT'