Introduce GraphFactory.

GraphFactory offers a way to instantiate graphs using reflection and a configuration file/object.
Merge remote-tracking branch 'origin/master' into graphfactory
Merge remote-tracking branch 'origin/master' into graphfactory
OrientVertex: fixed hashCode() to be used in SQL query like OIdentifiable instance
Merge pull request #412 from SparsityTechnologies/master

Blueprints-DexGraph goes to dexjava 4.8.1
updated CHANGELOG with 23 branch features.
Merge remote-tracking branch 'origin/graphfactory'
updated CHANGELOG with GraphFactory work.
Pierre De Wilde Contains.IN Contains.NOT_IN model and yet another Query API update.
minor parameter name update.
Changed CompareRelation to Predicate.
Merge branch 'master' of git://github.com/tinkerpop/blueprints
OrientDB: fixed bug on reusing graph from the pool when database is closed
bumped to support Neo4j 1.9.1 and changed to Predicate.evaulate().
fixed a bug in the CHANGELOG.
Optimize StringIDVertexCache

StringIDVertexCache's newTransaction() method performs a one-time
conversion from cached Vertex objects to their numerical IDs.
BatchGraph calls this method right after a graph commit call makes the
Vertex instances go stale.

To do the conversion, pre-patch newTransaction() code iterated over
every entry in the cache and used instanceof to find Vertex objects.
This patch introduces a set of entry keys updated since the last
newTransaction() call.  newTransaction() iterates over only the
updated entry set and then clears it.  Instead of BatchGraph w/ String
IDs doing an iteration on commit that is linear in the total number of
cached elements, the patched iteration is linear in the the elements
touched since the last transaction.
OrientDB: countEdges() throws exception if lightweight edge setting is on
Added EdgeHelper.getOther() utility method.
Refactored and optimized batch vertex caches impls

This commit pulls common batch-loading vertex cache code into
AbstractIDVertexCache and makes String and ObjectIDVertexCache extend
that abstract base class.  LongIDVertexCache uses Colt primitive
collections internally and is not amenable to sharing code with the
other Java collections-based implementations.

This commit also applies the optimization from
a0cf0f11d8c4eaf436493f742789142d741ac06e to Object and
LongIDVertexCache.  However, I've only tested it for
StringIDVertexCache.
Add explanatory messages for some failure conditions in the test suite.

This avoids having to look up the code to find out what's wrong.