Refactor cc modules to use decorators instead of inheritance

For example , instead of trying to have libraryLinker inherit from
baseLinker and libraryCompiler inherit from baseCompiler, create a
single decorator object that wraps both baseLinker and baseCompiler.

Test: Builds, no unexpected changes to build.ninja
Change-Id: I2468adaea8466c203a240259ba5694b8b1df7a52
diff --git a/cc/ndk_sysroot.go b/cc/ndk_sysroot.go
index 2eae360..04dce7b 100644
--- a/cc/ndk_sysroot.go
+++ b/cc/ndk_sysroot.go
@@ -96,7 +96,7 @@
 
 	ctx.VisitAllModules(func(module blueprint.Module) {
 		if m, ok := module.(*Module); ok {
-			if installer, ok := m.installer.(*stubInstaller); ok {
+			if installer, ok := m.installer.(*stubDecorator); ok {
 				installPaths = append(installPaths, installer.installPath)
 			}
 		}