Preparatory steps for the new consumer

Some miscellanious changes I found necessary while developing it, that have been
separated out so they can land first:
- define `type none struct{}` for convenience
- implement `FetchResponse.AddError()`
- prefer the seedBroker when fetching metadata, it makes client behaviour much
  more deterministic and easier to test in multi-broker setups
Merge pull request #220 from Shopify/consumer-ng-prep

Preparatory steps for the new consumer
Fix the rebase I screwed up
Clean up client's refreshMetadata function

- As I discovered while investigating additional issues from #213, I made a
  stupid in 1b465e7 and kept returning an error in the case where we ran out of
  leader-election retries, despite *explicitly stating in the commit message*
  that the whole point was to stop doing that.
- Simplify and reorganize flow control in several places.
- Clean up and improve log messages.
Merge pull request #223 from Shopify/fix-metadata-updates-again

Clean up client's refreshMetadata function
producer: wrap leader updates in a circuit-breaker

Otherwise a partition being entirely gone can slow things right down, since
we'll do a complete metadata refresh on every single message.