Updated docs: transactional endpoint, jmx, constraints, delete.
Make EphemeralFS able to dump snapshots as zip files.

In order to debug issues that occur with ImpermanentGraphDatabase, make
it possible to dump the contents of a EphemeralFileSystemAbstraction to
a zip file for analysis of the data.

This has been integrated in the CypherDoc generation, in order to get a
better view of issues, should they occur there.
Locking service for use in IndexingService.

Populating the indexes requires reading from the store files. That needs
to be synchronized such that applying transactions does not conflict
with the index populator reading the state of the store, since the store
might be in in inconsistent state while the transaction is being
applied. This locking service is simple and efficient, and will avoid
issues with interfering with the standard locking system, as re-using
the LockManager would have done.

Really, this is intended for a lower level of locks, where the existing
LockManager locks entities on a logical level, and distributed across a
cluster, this LockService locks entities on a record level, and only
locally on the same instance, never across instances in a cluster.

This locking API also included LockGroup, which can be used to group
multiple locks in a scoped region for releasing all at once at the end
of that region.
Integrate LockingService into IndexingService.

Use the LockingService to mutually exclude WriteTransaction and index
populators from the same nodes. This is done by having WriteTransaction
acquire locks for each node it updates, releasing them when transaction
application completes, and by having the store scanner that the indexes
use acquire a lock for each node that it reads, releasing it after it
has completed reading that node. This ensures that the node does not
change while the index populator reads it.

In order to introduce a clear lock region for when the index populator
reads a node, the NeoStoreIndexStoreView had to be refactored. It now
does node processing in two distinct steps:
1. reading - this is done under lock to ensure a consistent view of the
   node.
2. processing - this is done after the lock has been released, to allow
   the processing to be something complex, while minimizing the locked
   region.
Where NeoStoreIndexStoreView previously used the RecordStore.Processor
API, it now does the iteration itself to allow the lock to be lexically
scoped, making it much easier to reason about. Otherwise some mechanism
similar to the previous LabelsReference would have had to been used, and
LabelsReference was too complicated to follow even for its simple task,
it would have been even more complicated to use that pattern for locks.

While this change reduced the "reuse value" of RecordStore.Processor, it
also reduced the total size of NeoStoreIndexStoreView (slightly), which
should make it a valuable change in of its own.
Added documentation generation for Neo4j Status Codes.
Fix AsciiDoc syntax and PDF table layout for status codes, add them to the manual.
Add a test to verify correct generation of status code documentation
Fix ErrorDocumentationGenerator build failure

- Improves error handling, such that exceptions are visibile in the console output of the Maven build
- Fix the actual build failure, by making sure that parent directories of the files we want to write, actually exist when we need them.
Merge pull request #1591 from thobe/2.0-index-population-locks

beautiful!
Merge pull request #1590 from nawroth/docs-fixes

Updated docs: transactional endpoint, jmx, constraints, delete.
Fix typo.
Merge pull request #1598 from jakewins/doc-status

Added documentation generation for Neo4j Status Codes.
Adds useful 'exception contains' method that can check exception class type and message
LockService: naming and documentation.

Improvements to the naming of the participants in the LockService
implementation, and additions to the documentation of it to make the
code easier to follow.

* Structure/Inheritance diagrams in ASCII ART.
* Example boxes-and-pointers diagram for the wait queue in ASCII ART.
* Emphasise the queue structure through naming.
* Describe how the ReentrantLockService implements fairness.
HA stability fixes.

 o Cluster now allows same instance to restart a join cycle, as long as it joins from the same ip+port
 o FileLock gives more debugging details
 o ProposerState now uses value_1 rather than message payload in one incorrectly implemented branch.
Improve error logging when sending HTTP error response.

Ensure that we include the underlying exception as a root cause so
that our server-side logging includes it. Without this fix we just get
a WebApplicationException and its stacktrace with a null message, the
original exception was being returned to the client but thrown away on
the server side.
Add descriptions to status code classifiers in manual
Merge pull request #1593 from jakewins/hability

HA stability fixes.
Merge pull request #1600 from benbc/2.0-improve-http-error-response

Improve error logging when sending HTTP error response.
Diagnostics for surprising spurious failure.