add a simple get output port for key

Just a copy of getInputPortForKey() in fact.
track node output connections
add handling for branch output connections
add further accessors to node input and output connections
recalculate downstream input costs when updating
use a single branch to represent multiple outputs

This is much more accurate than repeating branches in the graph.
use better input connection fetching mechanism
clarify branch connection cost as input cost

The cost represents the input complexity, or the upstream branch density.
use a map instead of a stack of tuples to store attachments

Attachments are stored to keep branch output to another branch as input.
iterate on image connections not image input port keys

The keys method required us to get the connection anyways.
move branch nodes assignment into create

Nodes are required in a branch, why not make it more obvious by pushing it into the create method.
cache render stack until connections or render node changes
branch on multiple outputs not just multiple on a specific port

Just a correctness change.
mark caching task as complete and add an ISF task
remove some dead code
be sure to assign the color before evaluating the graph!
grammer tweak
use makeNode for the source node too
skip context setup when possible