Hand check the ReverseLinkedList example

Added the output of the transcript so we can do a quick diff later when
we optimize.

See #2.
Optimize AssignInstruction

See #4 and #10.
Make a copy constructor for SharingFunction that uses deep copy

See #6.
Fix isShared for x.sel := y

This is tricky because by default the isShared mapping is left empty. An
empty mapping means that nothing is shared.

Previously I was iterating through this empty mapping and trying to match
things based on that.

See #12.
Use addIsSharedMapping instead of manipulating isShared directly

See #10.
Use addName instead of removeName in x := nil transfer function

Made a mistake in reading the formula for isShared for x := nil

See #7.
Optimize PutNilInstruction

See #4 and #8.
Optimize AssignInstruction

See #4 and #10.
Optimize AssignNilInstruction

See #4 and #7.
Use se.sel instead of del

Fixed a typo from a previous optimization.

See #4 and #10.
Optimize NewInstruction

See #4 and #9.
Optimize put instruction

See #4 and #12.
Fix serious bug in how isShared is computed

Previously I was using the old SelectorEdges. However, in the case of
x.sel := nil and x.sel := y we have to use the newly updated
SelectorEdges.

See #8 and #12.