Support generating prebuilt_* modules from 1:n mapping of PRODUCT_COPY_FILES

The current implementation of prebuilt_* modules generation from
PRODUCT_COPY_FILES relies on the assumption that its entries are 1:1
mapping. However, there are entries where the mapping is 1:n (i.e. a
source file is installed multiple times with different names).

Some of the cases are copying the same file multiple times in the same
install directory with different file names. This cannot be supported
with a single prebuilt_* module, and a multiple prebuilt_* modules need
to be generated for a single source file to support this.

Implementation details:
- Import PRODUCT_COPY_FILES as a string list instead of map and process
  it
- Reformat the generated prebuilt_* module name to end with an interger
  instead of file extension
- Group source files to ensure that a source file cannot be duplicated
  in each generated prebuilt_* modules.

Test: m soong_generated_vendor_filesystem_test && observe etc/ueventd.rc is not shown
Bug: 375053752
Change-Id: Iac40ebfa4433a6589a5bc1ad31ce0cb7140bcfc4
diff --git a/android/variable.go b/android/variable.go
index 142fab9..b8c6ebc 100644
--- a/android/variable.go
+++ b/android/variable.go
@@ -611,7 +611,7 @@
 	BoardInfoFiles      []string `json:",omitempty"`
 	BootLoaderBoardName string   `json:",omitempty"`
 
-	ProductCopyFiles map[string]string `json:",omitempty"`
+	ProductCopyFiles []string `json:",omitempty"`
 
 	BuildingSystemDlkmImage bool     `json:",omitempty"`
 	SystemKernelModules     []string `json:",omitempty"`