Added public types for Gcc and VisualCpp tool chains

- Extracted 'Tool' type for setting executable name of compilers, linker, etc
- Code for configuring Tools and Paths for ToolChain is now in AbstractToolChain
- Renamed org.gradle.nativecode.toolchain.internal.Tool -> ToolType
Ensure that ignored tests don't trigger before() action in MultiTestRunner