Removing memory-based driver implementation for Neo4j, since it's very sensitive to neo4j version changes (it's a hotspot for upgrades), and it's not ever going to be a good choice for anything other than testing.

Converted all cypher queries to parameterized versions so they can be cached in the execution engine.

Added automatic cycle detection and annotation when new relationships are added.

Changed the graph/web construction logic to take advantage of the driver api allowing addition of multiple relationships in a single transaction.

Added api/implementation allowing selection of a concrete version for a variable versioned project reference.

Added api/implementation allowing retrieval of all paths targeting a particular project ref within a graph or web.