Small tidy up.
Fixed the build progress logger a bit (some loggers may not have been cleaned up).
Attempted to fix the progress reporting for parallel build.

1. Made certain events consumed by the progress renderer hierarchical, so that they understand the parent. This way, we can render the hierarchy of statuses instead of keeping track of incoming events in a list and assume the hierarchy. The next few commits will take advantage of this new feature.
2. Progress logger factory maintains hierarchies of process logger based on the current thread. So, it assumes that single hierarchy belongs to single thread. I don't like it very much but I couldn't come up with anything better. Perhaps we need to make the hierarchies more explicit in the API. Perhaps it's good enough for now (seems better than it was).
3. Keeping of the hierarchy is lenient at this stage. E.g. it's possible to complete the parent operation without completing the child. In the next steps we probably should decide whether this scenario is tolerable or not. If not, we probably need to change the progress logger factory API so that it's not possible to have incomplete operations.
Status / progress bar uses events hierarchy to render the progress

1. This improves the parallel build behavior. It is still not completely pretty when parallel build runs because we're missing the Building 23% progress info. The fix for this comes next.
2. If the parent was not registered yet or completed, this scenario is tolerated currently. It needs to be revisited when we decide on the strictness of the general algorithm.
Improved the status / progress message for parallel build.

1. Now the 'Building 25%' is shown for the parallel build, too. The task execution listener explicitly declares the parent of the progress loggers.
2. I'm not very happy with progress logger changes, it feels there should be a simpler and more explicit implementation. Please review.
Rework of VisualStudio plugin
- Extracted tasks for generating metadata files
- Added separate lifecycle task for generating a VisualStudio solution for a native binary (in addition to component-level lifecycle task)
- Generate visual studio project configurations for all native binaries
- Use absolute paths for visual studio file references
Fix VisualStudio generation so it handles project dependencies
Fix unit tests for visual studio projects:
- Use FileResolver and ProjectFinder in place of Project
REVIEW-3666: Changed return type of DependencyMetaDataProvider#getModule() to use ModuleInternal to avoid introducing a new method and additional casting.
Some work with single test execution DSL. Renamed 'selection' -> 'filter'.
Reworked the fine test selection DSL according to feedback / discussion.
Removed the feasibility of passing comma separated list of tests for inclusion.
Reworked the test filtering DSL a little bit so that it is more consistent with the command line option --tests
Renamed the command line option for test selection to --tests. Fixed the integ test.
Converted VisualStudio plugin to use model rules
- Added VisualStudioExtension which is registered in the ModelRegistry
- Use rules to create visual studio model, as well as to create tasks
Move some classes around
Merge remote-tracking branch 'remotes/origin/release'
Merge remote-tracking branch 'remotes/origin/release'
Some edits to the incremental compile and generated source set stories, added some stories for improving source sets.
Added a couple of notes.