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
Why do these channels have to be public? This seems like an internal thing.