Adding specialization of std::hash for variadic std::tuple.

NOTE: This is required because:
- AutoPacket needs to distinguish decorations by both data type and source type
- std::tuple is required in order for the pair of types to be sorted and compared.
- The boost implementation of a generalized hash should be avoided if possible.

PROBLEM: It may be the case that this definitions collides with the boost definition.
Made DataFlow a public class, changed default to no output, and changed GetDataFlow to return the meaningful default when the requested type matches no argument.
Generalized AutoPacket methods to attribute data to a source.

TODO:
- Enable DecorateImmediate to be attributed.
- Ensure that SatCounter decrements are conditional on the attributed source.
Amending unit tests to demonstrate check for possible bug: multiple calls to methods with optional arguments.
Adding type_info to DecorationDisposition.

NOTE: This will be needed in order for the decoration disposition to provide this information to the satisfaction counter.
Adding conditional decrementing of satisfaction counters.

NOTE: Passes all tests, but all enabled tests are for broadcast data only.