m/pkg/event: implement

This specifies event.{Value,Watcher}, an interface for data that might
be updated by its producer, and which is watched for such updates by
multiple consumers.

It also implements MemoryValue, a Value that is stored in memory.

Test Plan: adds unit tests.

X-Origin-Diff: phab/D706
GitOrigin-RevId: 271fd4e88969817b66318d3e03d50b70cf2819b8
diff --git a/metropolis/pkg/event/BUILD.bazel b/metropolis/pkg/event/BUILD.bazel
new file mode 100644
index 0000000..4e3b33c
--- /dev/null
+++ b/metropolis/pkg/event/BUILD.bazel
@@ -0,0 +1,20 @@
+load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test")
+
+go_library(
+    name = "go_default_library",
+    srcs = [
+        "event.go",
+        "memory_value.go",
+    ],
+    importpath = "source.monogon.dev/metropolis/pkg/event",
+    visibility = ["//visibility:public"],
+)
+
+go_test(
+    name = "go_default_test",
+    srcs = [
+        "example_test.go",
+        "memory_value_test.go",
+    ],
+    embed = [":go_default_library"],
+)