wire: make solver iterative instead of recursive (google/go-cloud#137)
wire: make solver iterative instead of recursive (google/go-cloud#137)

Primary reason is to make it easier to allow the process to continue and
collect errors. This has the side-effect of allowing larger depth graphs
since the solver no longer pushes Go stack frames.

Updates google/go-cloud#5

google/wire,google/wire