A simpler kafka consumer

```
kafka = KafkaConsumer('topic1')
for m in kafka:
    print m

kafka = KafkaConsumer('topic1', 'topic2',
                      group_id='my_consumer_group',
                      auto_commit_enable=True,
                      auto_commit_interval_ms=30 * 1000,
                      auto_offset_reset='smallest')

for m in kafka:
    process_message(m)
    kafka.task_done(m)
```
I keep thinking that a `collections.deque` of message.offsets would be super effective for every case I can imagine wanting to actually track task completeness.  Consider:

    def next():
        ...
        self.offsets[topic][partition].tasks.append(m.offset)
        ...

def task_done(self, msg):
    self.offsets[msg.topic][msg.partition].tasks.remove(msg.offset)

def commit(self, topic, partition):
    offset_to_commit = max(self.last_commit_offset, self.offsets[topic][partition].tasks[0]-1)
   ...

def shutdown(self):
    for topic in topics:
        for partition in self.offsets[topic]:
            if self.offsets[topic][partition].tasks:
                log.warn("Outstanding tasks: %s, may result in duplicate data upon next consumption")


Does that make sense?  Basically, get rid of the warnings about out of order commits and instead just keep track of the things you've emitted.  In the average case, it'll be O(1) to pop off the deque because what is being ack'ed should be the first (and only) element of the deque.