Added the possibility to add labels to nodes using ADD LABEL/CREATE
Added a bunch of tests
Moved helper methods into an implict class
Refactoring for better understandability
o Kernel API able to remove labels from nodes
o Added remove label and create labeled node support to the Beans API
o Adds ability to remove labels via the REST API
Adds more label docs
Revert "o Kernel API able to remove labels from nodes"

This reverts commit 1c4cdf34b7e374a6406e571abe4731a409ce3154.
Imports
Fixed incorrect cypher documentation links
Revert "Revert "o Kernel API able to remove labels from nodes""

This reverts commit c1f6a6a8f871dbc7cc33fc5fe1e9ad92d76bb143.

This commit now includes fixes for the problems which had it reverted:
o Ensuring statements are closed in a place common in both from
  TopLevelTransaction#finish() and TransactionManager#begin()
Fixed a problem where labels leaked out as being properties when loading properties on nodes
o StatementContext#close accepts 'successful' argument to use in transaction
  state when deciding whether or not to apply the state down the stack or not
o Wrote unit tests around TransactionStateAwareStatementContext and found
  and fixed bugs around that.
Tracks stats about added/removed labels
Merge pull request #456 from tinwelint/track-label-stats

Tracks stats about added/removed labels
Refactored QueryContext to be a Scala instead of a Java
Refactored the update stats counting to a single class
cypher: Adds bare flag to avoid relabeling newly created entities

* Adds bare flag to CreateNode
* Adds bare property to RelationshipEndpoint
* Adds bare and labels to NamedExepectation
Merge pull request #461 from boggle/bare

Ensuring that Nodes cannot be created twice with explicit properties or labels
Merge pull request #458 from systay/update-stats

Refactored the update stats counting to a single class
Turned on more labels acceptance tests