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/object.go b/cc/object.go
index fbb7b7f..c9f0a06 100644
--- a/cc/object.go
+++ b/cc/object.go
@@ -32,13 +32,16 @@
 }
 
 type objectLinker struct {
+	*baseLinker
 	Properties ObjectLinkerProperties
 }
 
 func objectFactory() (blueprint.Module, []interface{}) {
 	module := newBaseModule(android.DeviceSupported, android.MultilibBoth)
-	module.compiler = &baseCompiler{}
-	module.linker = &objectLinker{}
+	module.linker = &objectLinker{
+		baseLinker: NewBaseLinker(),
+	}
+	module.compiler = NewBaseCompiler()
 	return module.Init()
 }
 
@@ -84,7 +87,3 @@
 	ctx.CheckbuildFile(outputFile)
 	return outputFile
 }
-
-func (*objectLinker) installable() bool {
-	return false
-}