WIP client: min client for discovery

I am kind of with Waldon; I really don't like catch-all structs (like `http.Request`) because then you end up losing or working around a lot of the benefits of static typing. But there is a lot of duplicated code here it would be nice to see a bit split out.