consumer: silently skip messages already consumed

It seems that sometimes the broker can return us messages we've already seen,
and that this is legitimate, so we shouldn't produce errors, just quietly ignore
them.

Possibly fixes #166 pending confirmation from upstream
(https://issues.apache.org/jira/browse/KAFKA-1744).
consumer: more robust handling of message offsets

- Only skip messages before the requested offset at the beginning of a set
- Error if we don't receive any legitimate messages in the set.
consumer: add unit test

also fix a bunch of other bugs found by the test
Merge pull request #168 from Shopify/consumer-skip-consumed-messages

consumer: silently skip messages already consumed