Poolmgr needs to know usage statistics for a function's pod. This
change asynchronously taps poolmgr API when router uses a service.
Poolmgr can use this information to control pod expiry. It may also
be useful later as one of the metrics for autoscaling.
Create an implementation of http.RoundTrip which does retries --
RetryingRoundTripper. K8s services seem to timeout for about ~1-2 sec
after they're created even when the pods being routed to are ready to
serve requests.
Router uses poolmgr to specialize pods when necessary.
Router uses controller to get the list of triggers to listen for. For
now this integration is pretty crappy -- we just poll the controller
every few seconds and cache the result. The right way would be to
have some sort of watch API on the controller and use that. Or maybe
share access to etcd directly.