Verified that if the equality comparer always

returns false, the source sequence will be returned unmodified. The
implementation currently uses Devil's Advocate to force another property
to be written.
Forced Replace to correctly map

according to the supplied equality comparer.
Verified that Replace throws ArgumentNullException

when source is null. I've seen the test fail by temporarily inserting
if (source == null)
    return new T[0];
into the Replace method.
Added a Null Guard Clause to Replace.

This test had to be written from C#, because F# functions can't be null :)
Renamed 'item' to 'replacementValue',

because I think it more explicitly describes the role of the method
argument.
Corrected a test.

Because the Replace method returns a lazily evaluated sequence, the Null
Guard Claus may not trigger before a client attempts to iterate over it.
Therefore, the test now explicitly creates a list from the sequence.
Rewrote ReplaceReturnCorrectResultBasedOnFunction

so that it actually tests what it's supposed to test. In order to verify
this, I commented out the single C# example, and temporarily implemented
the Replace method by simply returning the input source.

This caused the ReplaceReturnCorrectResultBasedOnFunction test to
consistently fail for Int32 and String, but not for Guid or Version. The
reason for this is that the test relies on the statistical probability
that oldValue can be found in the input sequence, and that's not
particularly likely for Guids... apparently not for Version instances
either.

Still, the test consistently failed, which I think is the important part.
It would be possible to strengthen the test by picking an arbitrary value
from the input source, but to do so, we'd need the PickRandom
method/function, and we don't have that yet.