make changes to be more fault tolerant: clean up connections, brokers, failed_messages

- add integration tests for sync producer
- add integration tests for async producer w. leadership election
- use log.exception
Ensure that async producer works in windows. Fixes #46

As per the multiprocessing module's documentation, the objects
passed to the Process() class must be pickle-able in Windows.
So, the Async producer did not work in windows.

To fix this we have to ensure that code which uses multiprocessing
has to follow certain rules
* The target=func should not be a member function
* We cannot pass objects like socket() to multiprocessing

This ticket fixes these issues. For KafkaClient and KafkaConnection
objects, we make copies of the object and reinit() them inside the
child processes.
Merge pull request #55 from quixey/fault-tolerance

Improve fault tolerance by handling leadership election and other metadata changes

Thanks, @jimjh!
Merge branch 'master' into prod-windows

Conflicts:
	kafka/producer.py
Merge pull request #61 from mahendra/prod-windows

Ensure that async producer works in windows. Fixes #46
Ensure that multiprocess consumer works in windows
Add proper string representations for each class
Merge pull request #62 from mahendra/cons-windows

Ensure that multiprocess consumer works in windows
Enable absolute imports for modules using Queue.

When running on Linux with code on a case-insensitive file system,
imports of the `Queue` module fail because python resolves the
wrong file (It is trying to use a relative import of `queue.py` in
the kafka directory). This change forces absolute imports via PEP328.
Set host and port in ExternalService test fixture

So we can run tests against an already running Kafka instance

KAFKA_URI=tcp://localhost:9092 python -m test.test_integration
Allow KafkaClient to take in a list of brokers for bootstrapping
Update kafka-src to 0.8.0 tag
allow for timeout to be None in SimpleConsumer.get_messages
fix typo in README acks_timeout -> ack_timeout
Merge pull request #78 from zever/README-typo

fix typo in README acks_timeout -> ack_timeout
Merge pull request #77 from zever/timeout-none

allow for timeout to be None in SimpleConsumer.get_messages
reduce memory copies when consuming kafka responses
Replaced _send_upstream datetime logic with simpler time().
Remove tox from requires

Fixes #85
Merge pull request #83 from eklitzke/master

reduce memory copies when consuming kafka responses