ACCUMULO-2101 Check the environment for JAVA_HOME for native-maps Makefile

Pull the value for JAVA_HOME out of the environment instead of blindly setting
it relative to the location of a javah executable. If we have an empty value,
then fall back on the old calculation.
ACCUMULO-2027 Synchronized access to ZooKeeperInstance methods that mutated state

The usage pattern of a ZooKeeperInstance is to have many clients use the same
instance. Internall, the ZooKeeperInstances keeps a cache of information in a
ZooCache, which will manage connections to Zookeeper for getting and putting
data.

With the addition of close semantics on the ZKI, it is expected the ZKI will
free resources and halt operations for all clients. This requires ZKI method
calls to be linearizable, otherwise race conditions as described in
ACCUMULO-2027 will occur when a ZKI is simultaneously asked to close and
retrieve information.

This patch resolves that race condition by synchronizing all methods on a ZKI
that interact with an ZKI instance's ZooCache.
Merge branch '1.4.5-SNAPSHOT' into 1.5.1-SNAPSHOT
Merge remote-tracking branch 'origin/1.5.1-SNAPSHOT' into 1.6.0-SNAPSHOT
ACCUMULO-1965 Fix exception handling for namespaces

  Make the exception handling propagate correctly to the client.
  Vastly expanded on existing namespace tests to include checks for
  throwing the correct exceptions. Consolidated a lot of the fate
  operations code and refactored the master (slightly; moved inner
  classes to separate files) to be easier to modify the relevant RPC
  handling code.

  Fixed many API bugs related to throwing correct exceptions, found from
  the new tests added to NamespacesIT.