Fixed typos in comment.
Avoid reload if the node is *kept* by a CopyKeep.
Enable Stores to see through non-aliasing CopyB nodes.

When following the Memory chain for a Store, a CopyB node may be skipped, if
both its destination and source do not alias with the Store's destination.
Add an optimization for CopyB nodes.

This covers two cases (assuming no aliasing operations in between the nodes):

Firstly, a Store node whose destination lies completely within the CopyB's
destination can be deleted.

Secondly, if a previous CopyB (A) writes to the source of CopyB to be optimized
(B), we can use A's source pointer for further optimizations. If A's source is
constant, we can change B to read from A's source.  Cases with offsets are not
handled.