dout: add DoutPrefixPipe for composing prefix providers
a wonderful feature of DoutPrefixProviders is that they can be composed,
with each Provider adding onto the prefix of the previous one
to aid with this composition, add a DoutPrefixPipe that takes an
existing Provider and forwards the DoutPrefixProvider interface to it
the class that implements the DoutPrefixPipe interface only has to
override one virtual function, and never has to reference the previous
Provider after passing it to the DoutPrefixPipe constructor