If a node has been rendered with the same arguments before, it will return cached results.

This could speed up the evaluation of nodes in some cases.
Test storage of intermediate results.

We use a SideEffects node to check the amount of invocations the node
has done, and create a diamond-shaped network where both inputs of a
node connect to the side effect node.
Merge branch 'listresults'