Only replacing a node if it has changed
Sorting out the 'for' construct caching
Taking out an apply
If we get a value out of an atom twice, it's not the same object, because we call '->lens' on it, so they're never identical.
Merge branch 'perf-improvements' into 0.2.0-b5