WIP client: min client for discovery

@bcwaldon ack. if there is a general struct, many unused combinations will appear, and all of them should be tested.
IMO, if use general struct for this case, all the fields are orthognal, so it could be tested field by field. e.g. if it has Key set, it should have key=$key in the query. But it also needs to test that certain action generates correct struct.