Feature declare edge

This feature enables the declaration of data "pipes" between source and target AutoFilters. Correct use of pipes enables multiple instances of a type to be present on a packet without collisions. (For examples, see AutoFilterTest.AutoEdgeTest.)

The default behavior of AutoFilters is referred to as a "broadcast." When a source does not broadcast data, the only recipients will be those specified by pipes. Likewise, when a target does not accept broadcasts the only inputs will be from piped data.

Data broadcast and piping modes are declared via new methods (PipeData, BroadcastDataIn, BroadcastDataOut) in the AutoPacketFactory class. These use the NotifyWhenAutowired functionality to ensure asynchronous satisfaction.

Hopefully these pipes have no piranha plants inside ;-)