Upgrade to latest tinkerpop 2.4.0-SNAPSHOT stack
Change WeakHashMap to ConcurrentHashMap

The WeakHashMap in TitanBlueprintsGraph can be accessed concurrently
by multiple threads.  This access pattern is tested in
TransactionalGraphTestSuite#testCompetingThreads().  The javadoc for
WeakHashMap says the collection is unsynchronized.  When running the
test on my box, these unsynchronized concurrent accesses seem to the
type of failure seen in #284.

I changed the WeakHashMap to a ConcurrentHashMap.
Collections.synchronizedMap(new WeakHashMap()) would also work, but I
suspect that we want concurrency more than we want the ability to
automatically forget and GC uncommitted/unrollbacked transactions.
Reordered RexsterTitanServer setup

Cherry-picked @zachkinstner's RexsterTitanServer changes from
https://github.com/thinkaurelius/titan/pull/285 to support Rexster's
ReporterConfig
Updated Eclipse-related .gitignore lines
Added unimplemented Blueprints method stubs

The new has(), hasNot(), and limit() methods are marked with warnings,
TODO comments and currently have no effect on the query.  I added
these just to get Titan compiling again while I work on Metrics.
Testing Metrics on Thrift Cassandra backend
Remove unchecked cast in AbstractElement#equals()

Modify AbstractElement's equals() method to eliminate potential
unchecked casts while attempting to stay as close as possible to the
behavior of the original implementation.

closes #286
Let AbstractVertex remove multivalued properties

This one-liner change brings AbstractVertex#removeProperty(String) and
(TitanKey) into conformance with the Javadoc contract in the
TitanElement interface.

This commit also adds a unit test that failed on the pre-commit
behavior and now passes on the post-commit behavior.

This commit only modifies and tests vertex property behavior.  I
haven't looked carefully at edge property method behavior
conformance to interface contracts.
Change default Astyanax backoff configuration

Issue #291 shows Astyanax's connection timeout logic generating a
negative sleep time.  The log timestamps in the issue suggest that the
Astyanax timeout configuration is the default.

By default, Titan uses Astyanax's BoundedExponentialBackoff to
generate timeouts.  Though Thread.sleep() eventually gets a long
value, BoundedExponentialBackoff and parent class ExponentialBackoff
use int arithmetic internally.  This leads to integer overflow and
wraparound to negative values when baseWaitTimeMS * (1 <<
(attemptcount + 1)) crosses Integer.MAX_VALUE.  Our default
configuration ran afoul of this on its final timeout attempt before
exhausting its 30 retries.

This commit changes the defaults to:
* base wait time: 100 ms
* maximum attempts/retries/exponent: 8
* maximum allowed wait time: 25000 ms

The maximum integer calculated in ExponentialBackoff will be 100 * (1
<< (7+1)) = 25600, well below overflow (and that will in turn be
capped at 25000).
Thrift import, compiler warning, and timer cleanup
Call AbstractElement getID() insteado of getId()

Relying on capitalization significance to differentiate methods on
this object seems like asking for trouble.  For now, just fix the
capitalization bug introduced by
37b84fb6425485bd5f2ab0396885a9a9d616e47c, but we might want to
refactor getID() and getId() to more distinct names.
Cassandra-Thrift refactoring

This commit subsumes the useful changes in the thrift-refactoring
branch.  It's not a merge commit because titan03 and
thrift-refactoring had diverged enough to cause conflicts that seemed
to take longer to resolve than reproducing the changes on titan03.

This commit also updates to Apache commons-pool 1.6.  This
commons-pool version includes support for generics, obviating a bunch
of generics code formerly in
titan-cassandra/src/main/java/.../thrift/thriftpool.
Created wrapper KCVS that instruments w/ Metrics

MetricsInstrumentedStore wraps the KeyColumnValueStore provided to its
constructor with Metrics Timers, Counters, and Histograms to track
basic statistics about method runtime, result sizes, and exception
rate.

This commit also refactors Metrics configuration in MetricManager and
adds graphdb configuration options to control each of the four
supported Metrics reporters.
Fix getID() abuse

The test method testMultivaluedVertexPropertyRemoval assumed the
result of getID() wouldn't change across transactions, even though the
javadoc for the method says this is allowed.
Added option to merge Metrics across stores

The new option storage.merge-basic-metrics = true (default) combines
the metrics for edgeStore, idStore, vertexStore, etc.  Setting the
option to false makes each store report its metrics separately under a
unique prefix starting with "com.thinkaurelius.titan." and ending in
the store name.
Disable Metrics console dump in default test cfg

I've been playing with the Metrics ConsoleReporter in the
CassandraEmbedded test config locally.  It's very noisy, so I'm
turning it off before pushing.