runtime: Fix race condition with Runtime.Addrs()
runtime: Fix race condition with Runtime.Addrs()

It was possible to call Runtme.Addrs() while the server is still being
initialized. For example, in our tests we would start the server
listening on one thread, and then to check if it is up we would get
the address and make a query to /health. The issue is that in the
Addrs() method we key of whether the server is nil, but that value
is written to, potentially multiple times, in Serve() while the server
is being initialized.

We now have an initialized flag which is only set _after_ the server
has been initialized and is safe to reference. This flag is protected
by a rwmutex.

`go test -tags=slow -race -vet=off ./cmd/` is now passing with these
changes.

Signed-off-by: Patrick East <1a015b2c287ee8e96f2ec59ce4953b89b37de4a8@gmail.com>

open-policy-agent/opa,tsandall/opa,open-policy-agent/opa,tsandall/opa,open-policy-agent/opa,tsandall/opa,tsandall/opa,open-policy-agent/opa,tsandall/opa,open-policy-agent/opa,open-policy-agent/opa,tsandall/opa