[r=jameinel] cmd/juju: Make a test deterministic
[r=jameinel] cmd/juju: Make a test deterministic

TestGatherDescriptionsInParallel was timing dependent, and occasionally failed on my system. Rather than just increasing the timeout arbitrarily, I changed the code to be more 'event' based. Each plugin requires another plugin to have started before that plugin will return. Thus, if we don't start the plugins in parallel, the plugin will deadlock.

Because the failure mode is 'deadlock', I wrapped the call in a select timeout. This means that if it *does* fail, we have a garbage goroutine and process lying around (but it should never fail).

On the plus side, this makes it actually run faster, since each subprocess
doesn't waste time sleeping just so we can measure it. (from 350ms down to normally around 15ms.)

This is the only test that was failing (based on occasional timing hiccups) for me, which allows us to have this in tarmac.
reedobrien/juju,rogpeppe/juju,gabriel-samfira/juju,axw/juju,macgreagoir/juju,tasdomas/juju,mikemccracken/juju,frankban/juju,bz2/juju,mjs/juju,sinzui/juju,axw/juju,mhilton/juju-juju,marcmolla/juju,bac/juju,bac/juju,alesstimec/juju,bz2/juju,mattyw/juju,thomnico/juju,AdamIsrael/juju,howbazaar/juju,anastasiamac/juju,waigani/juju,cloud-green/juju,AdamIsrael/juju,cloud-green/juju,rogpeppe/juju,waigani/juju,cloud-green/juju,cherylj/juju,mhilton/juju-juju,bz2/juju,marcmolla/juju,ericsnowcurrently/juju,tsakas/juju,tsakas/juju,tsakas/juju,wwitzel3/juju,cmars/juju,mattyw/juju,tych0/juju,alesstimec/juju,makyo/juju,davecheney/juju,frankban/juju-tmp,bac/juju,howbazaar/juju,davecheney/juju,alesstimec/juju,reedobrien/juju,axw/juju,tasdomas/juju,gabriel-samfira/juju,mhilton/juju,fwereade/juju,wwitzel3/juju,sinzui/juju,waigani/juju,macgreagoir/juju,mjs/juju,perrito666/juju,Altoros/juju-vmware,jrwren/juju,alesstimec/juju,frankban/juju-tmp,axw/juju,cherylj/juju,bz2/juju,howbazaar/juju,kat-co/juju,mhilton/juju,ericsnowcurrently/juju,frobware/juju,mattyw/juju,reedobrien/store,frobware/juju,perrito666/juju,frankban/juju,marcoceppi/juju,dooferlad/juju,bogdanteleaga/juju,gabriel-samfira/juju,fwereade/juju,Altoros/juju-cloudsigma,mhilton/juju,voidspace/juju,dimitern/juju,fwereade/juju,voidspace/juju,perrito666/juju,mattyw/juju,Altoros/juju-cloudsigma,jrwren/juju,Altoros/juju-vmware,sinzui/juju,marcmolla/juju,mikemccracken/juju,frankban/juju,ericsnowcurrently/juju,bac/juju,bogdanteleaga/juju,AdamIsrael/juju,mjs/juju,jrwren/juju,mhilton/juju-juju,tych0/juju,davecheney/juju,cmars/juju,anastasiamac/juju,davecheney/juju,dimitern/juju,makyo/juju,frankban/juju-tmp,marcmolla/juju,frankban/juju,anastasiamac/juju,kat-co/juju,tasdomas/juju,wwitzel3/juju,frobware/juju,tych0/juju,rogpeppe/juju,tych0/juju,mjs/juju,macgreagoir/juju,thomnico/juju,makyo/juju,reedobrien/juju,mikemccracken/juju,bogdanteleaga/juju,kat-co/juju,dimitern/juju,cherylj/juju,makyo/juju,perrito666/juju,macgreagoir/juju,perrito666/juju,tasdomas/juju,mikemccracken/juju,waigani/juju,mjs/juju,marcoceppi/juju,howbazaar/juju,macgreagoir/juju,bz2/juju,axw/juju,mhilton/juju-juju,frankban/juju,voidspace/juju,mjs/juju,reedobrien/juju,thomnico/juju,fwereade/juju,dimitern/juju,gabriel-samfira/juju,cloud-green/juju,ericsnowcurrently/juju,howbazaar/juju,tsakas/juju,ericsnowcurrently/juju,bogdanteleaga/juju,mhilton/juju,thomnico/juju,anastasiamac/juju,sinzui/juju,dimitern/juju,dooferlad/juju,cherylj/juju,kat-co/juju,bac/juju,wwitzel3/juju,dooferlad/juju,mjs/juju,mikemccracken/juju,reedobrien/juju,cmars/juju,marcoceppi/juju,gabriel-samfira/juju,dooferlad/juju,frankban/juju-tmp,dooferlad/juju,marcmolla/juju,kat-co/juju,Altoros/juju-cloudsigma,AdamIsrael/juju,Altoros/juju-vmware,Altoros/juju-cloudsigma,cmars/juju,Altoros/juju-vmware,marcoceppi/juju,alesstimec/juju,anastasiamac/juju,voidspace/juju