imports: wait for fastWalk workers to finish before returning (take 2)
imports: wait for fastWalk workers to finish before returning (take 2)

This is Joël Stemmer's https://golang.org/cl/40092 again, but with
a fix to prevent workers from deadlocking on send if the caller had
already started to shut down. See:

https://github.com/golang/go/issues/16399#issuecomment-293278556

Updates golang/go#16399
Fixes golang/go#20109 (it looks like)

Change-Id: I3d1cf6f24563d02e1369a4496c2d37dcc1f5e5b8
Reviewed-on: https://go-review.googlesource.com/41681
Run-TryBot: Brad Fitzpatrick <ae9783c0b0efc69cd85ab025ddd17aa44cdc4aa5@golang.org>
TryBot-Result: Gobot Gobot <66cb808b70d30c07676d5e946fee83fd561249e5@golang.org>
Reviewed-by: Joël Stemmer <784de5c8f75c6f3bd043efb3f2738e123d626941@google.com>
Reviewed-by: Brad Fitzpatrick <ae9783c0b0efc69cd85ab025ddd17aa44cdc4aa5@golang.org>

golang/tools,golang/tools,syreclabs/go-tools,golang/tools,syreclabs/go-tools,syreclabs/go-tools,golang/tools,syreclabs/go-tools,golang/tools,syreclabs/go-tools,syreclabs/go-tools