Introdude new Locks API, and the Forseti lock manager

 o The classic LockManager remains, but as an implementation of
   the new Locks API. It has been slightly improved to not contend
   on global data structures when taking locks it already holds.

   The classc lock manager is now referred to as the "Community
   Lock Manager".

 o Forseti is a new lock manager, available in enterprise only, it
   is faster than the community manager, and scales linearly as more
   execution threads are added. It uses a new deadlock detection
   scheme as well, which means deadlock detection is significantly
   faster and requires no pessimistic synchronization.
Fixed lock management introspection.
Fixed incorrect shared lock holder list resizing
Includes before/after state in command #toString() methods

where applicable, namely nodes and properties
Merge pull request #2161 from tinwelint/2.0-before-after-command-tostring

Includes before/after state in command #toString() methods
Swapped last deadlock test to use new Locks API.
Extract test for node/relationship ids seek out of SimpleLogicalPlannerTest

o Code cleanup in idSeekPlanner
Improved guessing cardinality estimator to be somewhat consistent
Fix the selection plans for relationship by ID planning
Merge pull request #2166 from davidegrohmann/ronja-planning-cleanups

Ronja planning cleanups
Address some warnings.
Better error reporting if recursive directory deletes fail.

o Although it threw an IOException if the delete failed, we didn't get
  any information about why, because #deleteFile() itself doesn't throw
  an exception.

o We would like to get better reporting to help diagnose flaky tests.

o I am reluctant to change FileUtils#deleteFile() itself to throw an
  exception instead of returning a boolean because it is so widely used.
Add initial hash join planning support
Refactor CardinalityEstimator

Instead of having multiple methods for different kinds of entities
to estimate, make it simply take a logical plan.
In particular, that makes writing tests for planning considerably
easier by just spelling out a partial function that returns
different estimates for different plan patterns.
Use toSet in MatchTest to make the result order-independent
Remove dead code
Merge pull request #2168 from jakub-/hash-join

Add initial hash join planning support
Extract test for all nodes scan, index seek, index scan and label scan out of SimpleLogicalPlannerTest
Bump scala version to 2.10.4 (patch release)
Revert "Bump scala version to 2.10.4 (patch release)"

This reverts commit 384f6e17f225c8b3248194b85149d8bbb9c134ba.

For some reason, Jenkins is trying to grab the jar from our Maven repository
rather than Sonatype.