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 doc string for SimpleConsumer._get_message()
Resolve conflicts for #106