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.
DRY up the closure
Merge pull request #218 from Shopify/leader-breaker

Leader breaker
Add go 1.4 to travis
Add 1.4 support to readme
Merge pull request #224 from Shopify/go1.4

Go1.4
Rewrite consumer to support multiple partitions

- `Consumer` is now a much lighter "manager" that spawns `PartitionConsumer`s
  instead. `PartitionConsumer`s behave and have an API almost exactly like the
  old `Consumer`.
- Automatically groups and redispatches PartitionConsumers when leadership moves
  in the cluster.