Add proper string representations for each class
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.
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
Merge pull request #84 from nieksand/simpler_timeouts

Replace _send_upstream datetime logic with simpler time().
Allow customizing socket timeouts.

Previously, if you try to consume a message with a timeout greater than 10 seconds,
but you don't receive data in those 10 seconds, a socket.timeout exception is raised.
This allows a higher socket timeout to be set, or even None for no timeout.
Read the correct number of bytes from kafka.

According to the protocol documentation, the 4 byte integer at the beginning
of a response represents the size of the payload only, not including those bytes.
See http://goo.gl/rg5uom
* Guarantee reading the expected number of bytes from the socket every time
* Remove bufsize from client and conn, since they're not actually enforced

Notes:

This commit changes behavior a bit by raising a BufferUnderflowError when
no data is received for the message size rather than a ConnectionError.

Since bufsize in the socket is not actually enforced, but it is used by the consumer
when creating requests, moving it there until a better solution is implemented.
Allow None timeout in FetchContext even if block is False
Reset consumer fields to original values rather than defaults in FetchContext
SimpleConsumer flow changes:
* Combine partition fetch requests into a single request
* Put the messages received in a queue and update offsets
* Grab as many messages from the queue as requested
* When the queue is empty, request more
* timeout param for get_messages() is the actual timeout for getting those messages
* Based on https://github.com/mumrah/kafka-python/pull/74 -
  don't increase min_bytes if the consumer fetch buffer size is too small.

Notes:

Change MultiProcessConsumer and _mp_consume() accordingly.

Previously, when querying each partition separately, it was possible to
block waiting for messages on partition 0 even if there are new ones in partition 1.
These changes allow us to block while waiting for messages on all partitions,
and reduce total number of kafka requests.

Use Queue.Queue for single proc Queue instead of already imported
multiprocessing.Queue because the latter doesn't seem to guarantee immediate
availability of items after a put:

>>> from multiprocessing import Queue
>>> q = Queue()
>>> q.put(1); q.get_nowait()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/multiprocessing/queues.py", line 152, in get_nowait
    return self.get(False)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/multiprocessing/queues.py", line 134, in get
    raise Empty
Queue.Empty
Remove SimpleConsumer queue size limit since it can cause the iterator
to block forever if it's reached.
Add buffer_size param description to docstring