Concurrent metadata refresh

Changes broker metadata to refresh concurrently rather than sequentially. If all brokers error out the last call to `Broker.GetMetadata(...)` that returned an error is exposed and the client enters the resurrection retry loop.

This also make users of `sarama.Client` (e.g. consumer/producer) be solely responsible for disconnecting brokers who timeout or misbehave. 


Related to https://github.com/Shopify/sarama/issues/15
Per http://golang.org/pkg/sync/#WaitGroup.Add 

> Note that calls with positive delta must happen before the call to Wait, or else Wait may wait for too small a group.

So this will not work as currently designed - the first `Fetch` will spawn this goroutine, which will wait only for the first fetch to complete before continuing; subsequent calls to `Fetch` will call `Add` on the waitgroup *after* `Wait` has been triggered, so they will have no effect.