go/types/mapsets: add OrderedMap

Oh look, more Go generics.

This is a pretty standard Ordered/SortedMap type structure, with a
little twist: it implements having a subordinate 'CycleIterator' which
allows to iterate over it in a round-robin fashion, even as its
underlying OrderedMap is mutated.

This will be used, unsurprisingly, in a little TCP load balancer
implementation.

Change-Id: Ic8ab6a7fbcd6e1faf6224fc93bcc997c09364190
Reviewed-on: https://review.monogon.dev/c/monogon/+/1334
Tested-by: Jenkins CI
Reviewed-by: Lorenz Brun <lorenz@monogon.tech>
diff --git a/go.mod b/go.mod
index a69c12c..ff2d8ed 100644
--- a/go.mod
+++ b/go.mod
@@ -121,6 +121,7 @@
 	go.etcd.io/etcd/tests/v3 v3.5.4
 	go.uber.org/multierr v1.8.0
 	golang.org/x/crypto v0.0.0-20220517005047-85d78b3ac167
+	golang.org/x/exp v0.0.0-20220428152302-39d4317da171
 	golang.org/x/mod v0.6.0-dev.0.20220106191415-9b9b3d81d5e3
 	golang.org/x/net v0.0.0-20220425223048-2871e0cb64e4
 	golang.org/x/sync v0.0.0-20210220032951-036812b2e83c
@@ -377,7 +378,6 @@
 	go.uber.org/atomic v1.9.0 // indirect
 	go.uber.org/zap v1.19.1 // indirect
 	golang.org/x/arch v0.0.0-20190927153633-4e8777c89be4 // indirect
-	golang.org/x/exp v0.0.0-20220428152302-39d4317da171 // indirect
 	golang.org/x/oauth2 v0.0.0-20220411215720-9780585627b5 // indirect
 	golang.org/x/term v0.0.0-20210927222741-03fcf44c2211 // indirect
 	golang.org/x/xerrors v0.0.0-20220411194840-2f41105eb62f // indirect