[TW-148] ClassifiedNode, ClassifiedConversation
[TW-148] ClassifiedNode, ClassifiedConversation

To use an OutboundQ as an OutboundQueue, you don't have to give node and
message types with ClassifyNode, ClassifyMsg instances, you just have to
give 4 pure functions to derive the appropriate classifications and
origin from the chosen node type and message type.

A motivating use case: an application may have a map from NodeIds to
NodeTypes. It can use that to fulfill (NodeId -> NodeType), rather than
defining a custom type which pairs NodeId and NodeType in order to get
the ClassifyNode instance.

input-output-hk/pos-haskell-prototype,input-output-hk/pos-haskell-prototype,input-output-hk/cardano-sl,input-output-hk/pos-haskell-prototype,input-output-hk/cardano-sl,input-output-hk/cardano-sl,input-output-hk/cardano-sl,serokell/tw-rework-sketch