=str #15755 #15756 source and sink

sorry, deleted the old branch by accident, previous discussion was at #15786 
? SinkKey is all about the key and the value (which is the second type parameter). This trait on the other hand does not need any of this since not all Sinks need the Key functionality. So in the general case it simply does not matter what is returned (which is `Any`). The alternative would be to use two different non-related types and pattern match on which method to call, and then this one could return `Unit`. I find that slightly more confusing, though.