Efficient transactions

Pretty hefty refactor of `CypherTransaction`. The transaction process used to go like this:

* One empty query to start the transaction and create the CypherTransaction object
* All queries that actually do things happen
* One query to close the transaction
A minimum of three queries.

This removes that first step. The process is now:

* A new CypherTransaction object is created from the current session's connection
* The first query populates information specific to the transaction on the server but does not commit
* The rest of the queries, if any, happen as normal
* One final query to close the transaction
A minimum of two queries.

I removed a lot of legacy code, some unit specs that were too tied to implementation, a method attached to relationship deletion that was causing problems for Neo4j, and an error class that was never actually being used.

The changes to Gemfile are because they exist in neo4j-core.gemspec.