Add group coordinator lookup
Add group coordinator lookup

We need a way to send a request to the group coordinator.

I spent a day and a half trying to implement a `_send_request_to_group_coordinator()`
that included:
1. caching the value of the group coordinator so that it wouldn't have
to be repeatedly looked up on every call. This is particularly important
because the `list_consumer_groups()`, `list_consumer_group_offsets()`,
and `describe_consumer_groups()` will frequently be used by monitoring
scripts. I know across the production clusters that I support, using a
cached value will save ~1M calls per day.
2. clean and consistent error handling. This is difficult because the
responses are inconsistent about error codes. Some have a top-level
error code, some bury it within the description of the actual item.
3. Avoiding tight coupling between this method and the request/response
classes... the custom parsing logic for errors etc, given that it's
non-standard, should live in the callers, not here.

So finally I gave up and just went with this simpler solution and made
it so the callers can optionally bypass this if they somehow already
know the group coordinator.

mumrah/kafka-python,Yelp/kafka-python,wikimedia/operations-debs-python-kafka,wikimedia/operations-debs-python-kafka,Aloomaio/kafka-python,scrapinghub/kafka-python,dpkp/kafka-python,ohmu/kafka-python,ohmu/kafka-python,scrapinghub/kafka-python,dpkp/kafka-python,Yelp/kafka-python,mumrah/kafka-python,DataDog/kafka-python,Aloomaio/kafka-python