Expanded configuration such that:

  * GraphDatabaseSetting instances are now responsible for converting raw string
    properties to higher level types.

  * Config has a single get() method, all specialized get methods are deprecated.

  * Migration of old configuration can be specified in each Settings class,
    and is picked up and applied by the Config class.

  * Defaults are handled by the Config class itself.

  * Config is now instantiated in the constructor of AGD, to allow it to act as
    single source of truth for store directory et cetera.
Added Migrator class for config changes that only change the name of a property.
Configuration validation is now done each time new configuration changes are applied.
Improved error messages on invalid configuration, fixed error in AnnotatedFieldHarverster.
Fixes to failing tests.
Cleanup of the Neo4j Server, preparing for configuration and logging refactoring.

This commit:

 * Deprecates specialized methods on WebServer (such as addSecurityFilter and addRequestLimitFilter)
   and replaces them with a single addFilter method. This simplifies for implementors of WebServer.

 * Removes all uses of getJetty(), resealing the abstraction WebServer was meant to provide,
   this prepares the way for other WebServer implementations.

 * Changes the method of generating specialized NeoServer types (Community, Advanced, Enterprise, Wrapping)
   from using factory methods sent into the constructor to using subclassing.

 * Clarifies the distinction between NeoServer and Bootstrapper. NeoServer acts as an assembly class,
   bootstrapper instantiates and starts/stops NeoServer. This change is reflected by the introduction
   of AbstractNeoServer, and the replacement of NeoServerWithEmbeddedWebServer with CommunityNeoServer.

 * Modifies the ServerModule interface such that the interface moves closer to the LifeCycle interface,
   to lead the way for ServerModule eventually extending that.
Added Jetty6WebServer test.
Added test to ensure restarting the web server works.
Modifications to ensure restarting web server works as expected.
Added some TODO markers to remember points to revisit.
Removed #set and #modifyWith methods from Config
Order of "columns" and "data" is now really deterministic. CypherResultRepresentation no longer uses ObjectRepresentation, since that is not guaranteed to return deterministic order of methods. JsonFormat has also been changed to use LinkedHashMap, to ensure that iteration order is same as put order
Forces the test to fail if any worker encounter an exception
Imports
fixes #600: Double optional with no matching relationships returns too many rows
Merge pull request #601 from systay/600

fixes #600: Double optional with no matching relationships returns too many rows
Added compareWith method in addition to equals() which gives back a list of differences
Reduces contention in PersistenceWindowPool#acquire. Acquiring a persistence
window now won't need any synchronization or locking on the pool level
(which is expensive), only on the window level (which scales because it's so
granular and spread out over all the windows).
Contention fixes in lucene index

Added a clock cache that behaves approximately like LRU but is unsynchronized on get
Used that to replace the LRU caches in LuceneDataSource so the common path of getting an open, unmodified IndexReader is lock free
Removed the RW lock in LuceneIndex, was not used anymore
Revert "Reduces contention in PersistenceWindowPool#acquire. Acquiring a persistence"

This reverts commit 1c805e1c245a31dcabc3819d1196ca548eb6aad1.

Some tests broke on the build server, will investigate:

BigBatchStoreIT
BigStoreIT