Make deadBrokerAddrs a map to begin with
If we think the broker is dead, check we can connect

This might help with part of #151 by triggering the WaitForElection timeout if
we're super-eager and request metadata before the cluster even realizes the
broker is gone.
Merge pull request #152 from Shopify/wait-for-dead-brokers

Wait for dead brokers
make logger an interface

make logger an interface

add test, use errLog

revert api change, update documentation

rm unneeded SetLogger
Merge pull request #157 from nikolai-b/master

Make logger an interface
Implement ConstantPartitioner
Use the ConstantPartitioner in the functional test
Merge pull request #160 from Shopify/constant-partitioner

Implement ConstantPartitioner
Add Vagrantfile, and provisioning scripts that set up a working 5-node cluster.

The provisioning scripts are also used on Travis CI.
Re-enable go 1.2 and go 1.1 on Travis
Merge pull request #161 from Shopify/vagrant

Add Vagrantfile, and provisioning scripts that set up a working 5-node cluster
Fix race condition in Close()
switch to RLock
Merge pull request #162 from PatrickDropbox/master

Fix race condition in producer's Close()
Add default replication to vagrant setup
Merge pull request #165 from Shopify/tweak-vagrant

Add default replication to vagrant setup
Give it more memory by default
Let brokers connect to *all* zookeepers
Merge pull request #167 from Shopify/vagrant-tweaks

Vagrant tweaks
consumer: silently skip messages already consumed

It seems that sometimes the broker can return us messages we've already seen,
and that this is legitimate, so we shouldn't produce errors, just quietly ignore
them.

Possibly fixes #166 pending confirmation from upstream
(https://issues.apache.org/jira/browse/KAFKA-1744).