Add support for Rust C libraries.

Adds the ability for rust modules to be compiled as C libraries, and
allows cc modules to depend on these rust-generated modules. This also
means that soong-rust should not have any dependencies on soong-cc aside
from what's required for testing.

There's a couple small fixes included as well:

 - A bug in libNameFromFilePath that caused issues when library's had
 "lib" in their name.
 - VariantName is removed from rust library MutatedProperties since this
 was unused.

Bug: 140726209
Test: Soong tests pass.
Test: Example cc_binary can include a rust shared library as a dep.
Test: m crosvm.experimental
Change-Id: Ia7deed1345d2423001089014cc65ce7934123da4
diff --git a/cc/linkable.go b/cc/linkable.go
index 2c60337..cfbaffe 100644
--- a/cc/linkable.go
+++ b/cc/linkable.go
@@ -11,10 +11,9 @@
 	CcLibrary() bool
 	CcLibraryInterface() bool
 
-	InRecovery() bool
 	OutputFile() android.OptionalPath
 
-	IncludeDirs() android.Paths
+	IncludeDirs(ctx android.BaseModuleContext) android.Paths
 	SetDepsInLinkOrder([]android.Path)
 	GetDepsInLinkOrder() []android.Path
 
@@ -22,13 +21,34 @@
 	GetStaticVariant() LinkableInterface
 
 	StubsVersions() []string
+	BuildStubs() bool
 	SetBuildStubs()
 	SetStubsVersions(string)
+	HasStubsVariants() bool
+	SelectedStl() string
+	ApiLevel() string
 
 	BuildStaticVariant() bool
 	BuildSharedVariant() bool
 	SetStatic()
 	SetShared()
+	Static() bool
+	Shared() bool
+	Toc() android.OptionalPath
+
+	InRecovery() bool
+	OnlyInRecovery() bool
+
+	UseVndk() bool
+	MustUseVendorVariant() bool
+	IsVndk() bool
+	HasVendorVariant() bool
+
+	SdkVersion() string
+
+	ToolchainLibrary() bool
+	NdkPrebuiltStl() bool
+	StubDecorator() bool
 }
 
 type DependencyTag struct {