Update Metrics to 3.0.1

Formerly at 3.0.0-BETA3

This commit also deletes the ${metrics.version} property from the
top-level pom.  This property doesn't seem to be used anymore, and the
properties ${metrics3.version} and ${metrics2.version} are preferred
regardless to avoid confusion about which major version is implied
(Titan depends on both, 3 directly, 2 indirectly).

(cherry picked from commit f56c54c85ee5b465be00afce241de6c0742cce8a)
Edit maven assembly to remove cause of a warning

Assembly warns if an exclude pattern in one of its descriptor files
has no matches.  I inverted the body of the exclude and made it an
include with an identical effect.  No warning now.
Remove storage.hostname, storage.port from HBase

These options are ambiguous, leading to confusion like in #559.  Port
is particularly ambiguous because the key "storage.port" does not make
it clear whether it sets the ZK port or the HBase regionserver port.

These options now do nothing under HBase except log warnings.  The
warnings point the user at hbase-site.xml and storage.hbase-config.
Fix BufferUtil.nextBiggerBuffer overflow handling

This method always returned a zero buffer when allowOverflow was set
to true, regardless of whether an overflow had actually occurred.
Fix HBase local key partition end bounds

My initial commit needlessly incremented the end key of each range
produced by the HBase API.  I thought this was necessary from the
javadoc, but in testing, it seems the keys returned are already
exclusive.  Either that or HBase is producing regions with a single
rowkey overlap on each end...
Add HBase region presplit support

The HBase backend does the following when creating the Titan table:

* check whether the storage.region-count config option is set to an
  integer greater than or equal MIN_REGION_COUNT (3), and if so, use
  that value, or if not...

* attempt to retrieve a ClusterStatus object from HBaseAdmin and count
  the number of servers, and if that's greater than MIN_REGION_COUNT,
  then use that, or if not...

* call the createTable(String) method in the HBase API without
  specifying the number of regions, allowing the HBase implementation
  to apply its own internal default value

I didn't realize MIN_REGION_COUNT would be necessary until I tried
setting region-count to 1, at which point HBase rejected my
createTable call with an exception.  I also found this:
https://issues.apache.org/jira/browse/HBASE-8170.
Refactor ID partitioning configuration

Deleted IDPartitionMode enum.  ids.partition is now a boolean again.
If it is not present in the kcvs configuration, then it is set to
features.isKeyOrdered() && features.isDistributed() just prior to
freezing
Change MapR ZK version to 3.4.5
Refactored HBase region count configuration

Added a new option, regions-per-server, that takes effect if
region-count is unset.  When it takes effect, Titan's table is created
with total region count = (number of servers reported by HBase
ClusterStatus) * (regions-per-server).

If neither option is set, then the HBase manager still calls
HBaseAdmin#createTable(String) without specifying any rowkey
boundaries or region count.
Adding debug log msgs around storage failures
Naive HBase deprecation fix

This removes references to now-deprecated HBase API methods.  However,
it uses the simple approach to connection pooling recommended by the
HConnectionManager API @
http://hbase.apache.org/apidocs/org/apache/hadoop/hbase/client/HConnectionManager.html.

The problem with this is twofold:

* it's very slow -- even a tiny lock write takes on average 125 ms on
  my test machine, perhaps because of the heavyweight setup inside
  HConnection's implementation, which includes creating an executor

* my use of the HConnectionManager API may be leaking connections,
  because midway through the 0.94 test suite, the tests start dying
  with "Too many open files" when attempting to instantiate
  org.apache.zookeeper.ClientCnxnSocketNIO
Refactor HBase connection handling

Now HBase manager is 1-to-1 with HConnection.  Each manager creates
its single HConnection during construction and assigns it to a final
field.  However, every method is responsible for calling
connection.getTable(String) and closing the returned table object in a
finally block.  These HTableInterface instances on the stack are not
thread safe.  The HConnection is only closed when the manager is
closed.

Compared to creating an HConnection on the stack each method, this
approach is faster and does not cause too many open files errors
during testing.
Suppress HConnectionManager exception warning

The method HConnectionManager.createConnection throws a narrower class
of of Exceptions in 0.94 and a wider class (proper superset of types)
in 0.96.  Catch the wider set and silence a warning about exception
hiding that appears when compiling against 0.94.
Deleting commented code in HBaseStoreManager
Cleanup HBase method visibility and ordering

Moved private methods to end of class definitions, moved public
override methods to top, combined a pair of static initializer blocks,
made some public methods in HBaseKCVS private
Javadocs for ConfigOption enum

I just converted the existing regular comments next to each
ConfigOption enum value into javadoc comments preceding their
respective values
Removing titan-persisitit

master's copy of titan-persistit has migrated to the
titan-experimental repository

titan-site/src/site-resources/index.html
Add DEBUG logging of Cassandra consistency levels
Add system_properties to HBase CF shorthand map

closes #595
Move titan.properties into a Titan subpackage

fixes #597

Also makes TitanConstants's static initializer a little more defensive
with message-bearing Preconditions