Consider adding generic header mapping strategy
Currently when one wants to map custom headers they have to rely on binder specific property which makes application unnecessarily coupled to a binder implementation. For example with Kafka binder one would need to set spring.cloud.stream.kafka.binder.headers property instead of something like spring.cloud.stream.headers which would be binder independent.
That of course may present issues with some of the specifics of the binder and versions of messaging middleware it uses. For example with Kafka pre-0.11 where headers are actually embedded in the message it may be difficult to user SPEL patters (i.e., *). In those cases we may consider binder hook to warn user that this particular binder may not support such feature.
Moreover, the rabbit binder has ...headerPatterns for its header mapper (which can be negated - !foo means all headers except foo).
Spring Kafka now has a similar header mapper (which is currently not configurable in the binder) and embedded headers (via ...headers) do not currently support patterns.
Related issue : #628