Make KafkaProducer managed by the dropwizard environment's lifecycle

Note I added code to KafkaProducerFactory to register the producer on `environment.lifecycle()`, just like the consumer factory registers the consumer. This isn't a responsibility I'd normally expect a factory build method to have, but thought it best to stick to the project conventions.

While I was at it I made KafkaProducer's close method into an implementation of Closeable, which doesn't hurt and means it could be used with try-with-resources etc.

Also fixed what appeared to be a typo in the package name for producer.