This defines filtering channels that can apply transformations to objects as they are read and/or written. A completely filtered channel can be created using the `FilteredChannel` factory, or a filtered end can be created for an existing channel.

Only a `PoisonFilter` is included in this package. User-defined filters can be created by implementing the `Filter` interface to define the transformation operation to apply on data objects.