fietsje: implement .replace, add Cilium dependencies.

The new .replace() can be used to mirror 'replace' stanzas in go.mod,
and that's what it's being used for in Cilium, as it ships a handful of
forked libraries that we have to pull in.

The Cilium targets are currently unused, but the ones confirmed to build
are:

 - @com_github_cilium_cilium//cilium: cilium API client
 - @com_github_cilium_cilium//daemon:daemon: cilium daemon/agent
 - @com_github_cilium_cilium//operator: cilium operator

These currently built as dynamic libraries - turning them into
static/pure builds will come in a later build.

Test Plan: how do we test this? :)

X-Origin-Diff: phab/D542
GitOrigin-RevId: b38c7c1d0be8b0b88ea8f6992c9c5557189399cc
diff --git a/build/fietsje/render.go b/build/fietsje/render.go
index d06e530..bc5d732 100644
--- a/build/fietsje/render.go
+++ b/build/fietsje/render.go
@@ -47,9 +47,15 @@
 		fmt.Fprintf(w, "        importpath = %q,\n", d.importpath)
 		fmt.Fprintf(w, "        version = %q,\n", d.locked.semver)
 		fmt.Fprintf(w, "        sum = %q,\n", d.locked.sum)
+		if d.replace != "" {
+			fmt.Fprintf(w, "        replace = %q,\n", d.replace)
+		}
 		if d.disableProtoBuild {
 			fmt.Fprintf(w, "        build_file_proto_mode = %q,\n", "disable")
 		}
+		if d.forceBazelGeneration {
+			fmt.Fprintf(w, "        build_file_generation = %q,\n", "on")
+		}
 		if d.buildTags != nil {
 			fmt.Fprintf(w, "        build_tags = [\n")
 			for _, tag := range d.buildTags {
@@ -65,6 +71,13 @@
 			fmt.Fprintf(w, "        ],\n")
 			fmt.Fprintf(w, "        patch_args = [%q],\n", "-p1")
 		}
+		if d.buildExtraArgs != nil {
+			fmt.Fprintf(w, "        build_extra_args = [\n")
+			for _, arg := range d.buildExtraArgs {
+				fmt.Fprintf(w, "            %q,\n", arg)
+			}
+			fmt.Fprintf(w, "        ],\n")
+		}
 
 		fmt.Fprintf(w, "    )\n")
 	}