Added the ability to implement the Node trait via a derive procedural macro. This provides a much cleaner syntax for creating new nodes.
Added two helper types: NodeReceiver and NodeSender. These types must be used when creating the structure for the Node derive macro to know which fields are crossbeam senders and receivers.
Nodes derives via the macro must have a run() function implemented on the structure which is used on each iteration of the node. This will be a compile-time error if it is missing.
Updated all nodes to use the new implementation.
Remove the create_node! macro and its support functions.