Generate a VisualStudio solution more compatible with VisualStudio
- Use tabs and windows newlines
- Fix the definition of configurations
Create all VisualStudio projects as 'Makefile' projects
- Remove any attempt to create a functional native Visual Studio project
- Use gradle as 'Makefile' engine for project building
Simplify mapping of Gradle components to Visual Studio projects
- Each executable component maps to a single Exe VS project
- Each library component maps to a Dll and Lib VS project
- All sources for every binary for component are included in VS project
- Flavor and platform contribute to configuration name if multiple are defined for component
    - This means that the 'configuration' portion of a VS configuration is unique in a project
Map all VisualStudio configurations as "Win32"
- This prevents VisualStudio from generating duplicate configurations on first open
- We might find a more sophisticated mapping in the future
VS Project contains sources for any binary included in project
Generate the full set of configurations for a VisualStudio solution
- Solution is now generated for a VSProject, rather than a specific binary
VisualStudio configuration names match binary names
Fix building with VisualStudio
- Use 'gradle' instead of 'gradlew.bat' as build tool
- Include full path to binary lifecycle task
Better support for VS executing Gradle for building
- detect and use the wrapper if present
- allow the gradle command to be configured
Use relative paths in generated VS files where possible:
- Include '-p' argument to force grade to run from the rootDir
Better support for building in VS
- Don't create inter-project references
- Only the primary project should build when the solution builds
Enable debugging from within VisualStudio
- Build using the InstallExecutable task
- Use the install directory as output
Fix for breakages on windows
- Normalise file separators in VisualStudio utilities to make testing simpler
- Include rcCompiler defines in VisualStudio defines
make ModuleMetadataProcessor available to CachingModuleVersionRepository.java

- cleaned up some tests on the go
introduced common abstraction for Ivy and Maven repo/module test fixtures
evaluate component metadata rules in CachingModuleVersionRepository to determine if component is changing
Fix hang while starting daemon from Eclipse with Lombok.

Catch IllegalAccessError exception while using Eclipse lombok
integration and Eclipse Gradle Plugin. Due to this uncatched exception,
Eclipse hangs on building model.

Patch submitted by Gregory Bevan.
REVIEW-4084: Let the ComponentSelectionReason expose whether it's expected or not and use that flag for reporting.
REVIEW-4085: Test setup requires knowledge about the default configuration. Added base plugin.
Moved the VisualStudio plugin into a 'plugins' package