Don't delete test directories after successful tests.

We have tests that are flaky because of failures to delete files on
Windows. This is caused by a problem with Windows/Java where files that
have been memory-mapped have locks held longer than expected (see
http://bugs.java.com/bugdatabase/view_bug.do?bug_id=4715154). We can
work around this problem completely by not even trying to delete the
test directories.

This means that subsequent runs of the tests will start with dirty
directories. There is an earlier commit which changes all our tests to
clean out the directories that they use before they start running the
tests.
Lazy properties now use a provider for PropertyStore.

- Fixes a cache issue where LazyProperties would hold old reference to
  property stores after a data source restart.
Merge pull request #2210 from benbc/2.0-dont-delete-test-directories

2.0 dont delete test directories
Merge pull request #2213 from jakewins/2.0-lazyprop

Lazy properties now use a provider for PropertyStore.
Removes an unnecessary debug log statement
Make UDC user agent recording more testable.

o We have been getting sporadic failures of the UDC
  CollectUserAgentFilter integration test. It looked like this was
  because 1) we were testing the logic through an integration test and
  2) the logic was complicated because of the sampling that was being
  done (only recording one in a hundred requests).

o I have added a unit test to cover most of the logic.

o I have removed the sampling so that we now record every request. The
  sampling was originally put in to reduce possible performance impacts
  of the filter. I have changed the implementation so that it no longer
  uses regular expressions (String#split() has a special case for
  single-char delimeters) and read the Jersey code that we call to get
  hold of the request headers; I'm convinced that everything that we do
  now is very fast, so the sampling is not necessary.

o In order to make the whole thing more testable (to avoid problems with
  static state), I have re-worked the way the state is stored. It's
  somewhat convoluted to satisfy the various constraints that are put on
  us by the way this code is used. See CollectUserAgentFilter for
  details.

o Because the interface of CollectUserAgentFilter has changed, we need
  to rework the UDC integration testing. This integration testing is
  somewhat tricky because of the way our Maven modules are stiched
  together. Previously we had a dummy implementation of the filter for
  UDC testing, but that meant that it's easy for the interface to get
  out of sync. Instead I've moved the integration testing into its own
  project so that it can depend on both server and UDC without
  introducing a circular dependency.
Improved TopPipe performance by 600x

* made Expression.isDeterministic a val
* use a tuple with extracted context values for sorting, remove the need to re-lookup each expression value
* implement proper top-n select using a "runtime" approach with Arrays and binarySearch
Merge commit '2cb8a29' into 2.0-merge-1.9
Merge commit '0920288' into 2.0-merge-1.9
Merge commit 'ca1dd77' into 2.0-merge-1.9

Conflicts:
	community/kernel/CHANGES.txt
Merge commit 'a8d6968' into 2.0-merge-1.9
Merge commit '5deecc7' into 2.0-merge-1.9

Conflicts:
	community/server/src/main/java/org/neo4j/server/rest/web/CollectUserAgentFilter.java
Merge commit 'e49804e' into 2.0-merge-1.9