Major refactoring of internals involved in UpToDate checking and incremental tasks
- Changed TaskUpToDateState to fire changes against a specific UpToDateChangeListener, which provides ability to stop accepting further changes.
- Replaced CompositeUpToDateState with SummaryUpToDateState
  - does not implement TaskUpToDateState
  - Only provides changes from a single underlying source, and limits the number returned
- Most TaskUpToDateState implementations extend SimpleUpToDateState
   - Pulls all changes into a collection before firing change events
   - Caches all changes for subsequent calls
   - Output files currently use this mechanism: this will be changed soon
- InputFilesUpToDateState now caches changes from earlier invocations, and resumes parsing from the last change
   - FileCollectionSnapshot.changesSince takes a SnaphostChangeListener, that permits cancellation and resuming again from a particular change.
Reorganise internal package structure or o.g.a.internal.changedetection
Further package reorganisation for change detection
- Split 'rule' implementations from TaskArtifactStateRepository, and removed coupling
Stream output file changes in up-to-date checks
- OutputFilesSnapshotter now honours the listener stop signal
- Always assert that listener does not receive events after stopping
Extend unit test coverage
- coverage for SimpleTaskStateChanges
- Test for isStopped() handling of DefaultFileSnapshotter
- Ensure predictable iteration order in DefaultFileSnapshotter and unit test beginAfter()
Unit tests for file state change 'rules'
Renamed MavenDeployerConfigurer -> MavenRemoteRepositoryFactory and removed unused cruft.
Added some notes about deferred configuration to the PublishingExtension DSL reference
Spockified test
Moved all of the up-to-date checking into the DefaultTaskArtifactStateRepository
- ShortCircuitArtifactStateRepository now only short-circuits for --rerun-tasks
- Added 2 new TaskStateChangeRules:
  - HasNoOutputsStateChangeRule - for non-incremental tasks that don't declare outputs
  - UpToDateSpecStateChangeRule - for handling task upToDateWhen
  - These 2 cases are now logged consistently, and results are cached for incremental change detection
- Log reason(s) when executing incremental task with 'rebuild' context
Removed unneccessary task name from change messages
Minor checkstyle fix
Ensure that the task artifact cache is always locked prior to performing up-to-date checks:
- this was not the case when a task was directly executed in a build script.
REVIEW-2050 inject DocumentationService directly in Tasks
- remove http check; should be part of the documentation subproject; spin of new story for that
Trimmed down the single-use daemon message and reduced the level to lifecycle.
REVIEW-1843 Updated integ tests. Added failing test case for a new potential issue.
Updated the test after tweaking single use daemon message.
REVIEW-1845 Removed unnecessary cache operations.
REVIEW-1841 Fixed deprecation.
Tidied up a TODO. The specific assertions in this test looked more confusing than using the dependencies task for checking.