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.
Test case and fix for possible infinite recursion on log rotation
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.
Test case now propertly asserts stuff

Add assertions to test case, do not have it depend only on throwing exception on failure.
Change support method to return extra info needed.
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
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