Move incremental compile cache into .gradle/tasks

- Updated CacheRepository so that it can create a cache for a Task
    - Plan is to make cache layout more consistent and configurable
- Use CacheRepository when instantiating IncrementalCompiler
- Change IncrementalCompilerProcessorFactory -> IncrementalCompilerFactory
Extracted layout logic from DirectoryCacheBuilder

- CacheLayout is provided to CacheBuilder
   - Determines cache base directory
   - Applies layout-specific properties
- Incremental compilation cache is now stored in:
    .gradle/<version>/taskState/<taskName>/incrementalCompile