Textual error codes

This makes the error codes returned from the "transactional endpoint" of
the HTTP API be strings. String error codes has several benefits over
numeric error codes. Textual error codes are more descriptive and easier
to search for. Textual error codes also support both classification and
categorization, numerical error codes can only support either one or the
other.

Classification would be the distinction between transient and permanent
error conditions for example. Categorization would be the distinction
between different error sources (client side or server side), and
between different types of error (syntax errors, transaction errors,
et.c.).
Name spaces for Status code definitions.

Declares a separate enum for each Category of error statuses.
Specific Status codes for Cypher exceptions.
Don't roll back transaction on ClientError.
Merge pull request #1385 from thobe/2.0-textual-error-codes

Textual error codes
Remove randomness in BitmapFormatTest.

The randomness could generate bad input (negative numbers), which would
fail the test at occasionally. Instead iterate over all possible
permutations, the space of possible combinations is small enough.
Add merge functionality to core API

This contains work from TL, CV, BBC.

Details:

o Core API
  o Add new Merger and MergeResult interfaces to core API
  o Add GDS#getOrCreate(label1, label2, ...).withProperty(k, v).merge()
  o Add UniqueFactory#asMerger()
  o Update javaocs and documentation examples for creating unique nodes

o Change locking of nodeGetUniqueFromIndexLookup
  o New contract: RLock held afterwards if node was found, WLock otherwise
  o Introduce ReleasableLock as a means of either manually releasing locks or registering them with the transaction

o Loosely related fixes
  o Fix InMemLabelScanStore to handle queries for labels that haven't been used before
  o Fix InMemoryIndex to not apply updates idempotently in online mode
  o Fix BitmapFormatTest.shouldBeAbleToCheckIfASingleNodeIdIsSet
  o Make KernelTransaction.assertOpen() public
  o Make Statement.assertOpen() public
  o Make NotInTxException extend IllegalStateException instead of being a plain RuntimeException
Clean up

o Support for global scans
o Remove merger support from UniqueNodeFactory
o Various glitches
Remove hack to get a ThreadToStatementContextBridge

We only used this to check that we were in a transaction. However,
the act of reading from an index - the `index.get` call - already
implies this assertion. So it is completely safe to just delete this
ugly code.
Enums are inherently Comparable.
Make nodeGetUnique use a fresh index reader