Major untested Metrics refactoring

Made Metrics configuration transaction-centric.  Each graph
transaction can be configured to disable metrics, enable metrics, or
enable metrics with a custom metric name prefix.  The last option is
intended to let users segregate Metrics measurements generated by
Titan in whatever way they like -- for instance, by setting the
metrics prefix to the name of an application or the name of an account
originating the tx.  User provided metric prefix strings override the
Titan default and will appear in whatever Metrics reporter targets the
user configures, such as Ganglia or Graphite.

This commit is a probably-buggy refactoring baseline.  It reflects the
broad strokes structural changes that I wanted to do in Metrics
configuration, but I've probably messed up the details somewhere.
Additional bugfix commits likely to follow...
Fix Configuration loading exception

Replace Configuration#getLong(String) call with call to
Configuration#getLong(String, null) to avoid exception when the key is
unbound
Fix getSlice Metric name mangling
Fix broken getSlice.iterator Metric names
Make StandardTitanTx increment tx counters

Before this commit, StandardTitanTx created and configured its
counters properly, but never actually incremented them.  Added three
counter.inc() calls, one for begins, another for commits, another for
rollbacks.
Fix metrics.prefix config parsing

The logic attempting to read to read the metrics.prefix key was used
the wrong config subset; moved to
GraphDatabaseConfiguration#configureMetrics()
Change metrics prefix in non-transactional context

Some backend interactions happen outside any transaction, such as the
background ID buffer thread or the test cases.  These now have their
own Metrics name prefix.
Renamed GraphDBConf constants and updated javadocs

Refactoring the names of several Metrics-related config constants,
most of which I just introduced in commits over the past few days
Disable Metrics by default

Changed BASIC_METRICS_DEFAULT from true to false
Metrics-related Javadoc update
Added option to shorten HBase CF names

Per advice in http://hbase.apache.org/book/rowkey.design.html#keysize.cf

This option's configuration property key is storage.short-cf-names.
It's honored only by the HBase store manager.  It's disabled by
default.
Include lock stores in HBase short CF names map

Now the _lock_ counterparts to the vertex index, edge index, edge
store, and id store are also shortened.  The one-char short names of
the lock stores alphabetically follow the one-char short names of
their non-lock counterparts.  The id store maps to "i" and the id lock
store maps to "j", etc.
Statically check HBase short CF name integrity

New static initializer guarantees that the map of long CF names to
short equivalents is injective, that is, that no two distinct long
names map to the same short name.
Convert HBase short CF name map to bimap

Also, when configured to shorten CF names, make the HBase store
manager sanity-check CF names passed into openDatabase.  shortnames of
the longname<->shortname bimap are disallowed.  Only longnames or
strings that aren't present on either side of the bimap are allowed.
Replace RandomPartitioner with Murmur3 in tests

The last use of RandomPartitioner is now in the cassandra.yaml file
packed in the distribution zipfiles.
Fixes #439 multiquery issue.
Added causing exception when class fails to load.
Rewrite HBase test harness

This commit updates the default HBase version in titan-hbase from
0.94.7 to 0.94.12.  The new test harness and pom supports targeting
Hadoop versions besides the default.  I tested retargeting with Hadoop
versions 2.0.0-alpha and 2.2.0.  The default Hadoop target version
remains unchanged at 1.0.4.

Updating the HBase version from 0.94.7 to .12 should be safe:

http://hbase.apache.org/upgrading.html#hbase.binary.compatibility
Copy HBase Ruby files for shell support

This commit makes `titan-hbase/bin/hbase shell` work again
Disable HBase GC info

GC information is apparently only logged to the logs/hbase.out file
when the HBase daemon runs.  Invoking the HBase shell, on the other
hand, results in a bunch of GC information cluttering stdout and
making it hard to interact with the shell.