Add 'codec' parameter to Producer

Adds a codec parameter to Producer.\__init__ that lets the user choose
a compression codec to use for all messages sent by it.

This change technically breaks backwards compatibility **if** a user instantiated a Producer using positional arguments instead of keyword arguments. It's up to you all how to handle this concern.