Fix offset increments:

* Increment the offset before returning a message rather than when 
  putting it in the internal queue. This prevents committing the wrong offsets.
* In MultiProcessConsumer, store the offset of the next message
Store fetched offsets separately.

Fetch requests can be repeated if we get a ConsumerFetchSizeTooSmall
or if _fetch() is called multiple times for some reason. We don't want
to re-fetch messages that are already in our queue, so store the offsets
of the last enqueued messages from each partition.
Only use timeout if it's not None
Make get_messages() update and commit offsets just before returning
Add proper string representations for each class
Syncing offset commit and fetch api keys with Kafka trunk code
Deleting client_id from offset commit and fetch response as per Kafka trunk code
Version bump
Update README.md too
0.9.0
Make the default connection timeout None

This fixes the default behavior, which used to cause a socket timeout
when waiting for 10 seconds for a message to be produced.
Change default socket timeout to 120 seconds in both the client and connection
Implement offset fetch/commit via zookeeper.

* Tried to be consistent with the Scala client.
* Support in MultiProcessConsumer not implemented.
* Removed check for self.count_since_commit in commit() since we may have manually changed the offsets (e.g. with a seek)
Merge conflicts