Add StringDecoder for kafka messages

 - Add StringDecoder for decoding kafka key/value messages
Just looked at the Scala bytecode and the only state (field) is the encoding - it looks thread-safe and we can use a `final`instance as long as we pass the encoding in via a constructor instead of a setter.