DiffResult is now immutable.
Simple API should work now (not yet tested).

As part of this, I really wanted to allow the caller to pass in string[] instead of one huge string since that is the source of tremendous garbage and huge allocations that are not necessary.
So I had to change some of the existing code to allow me to tunnel that string[] through rather than creating it internally regardless.

As part of this, I had to remove ModificationData.RawData, which some tests were setting by passing a string into its constructor. It turned out that this value was not used in the test anyway (it was really more of a code comment). So nothing was lost from the test really.
Add a couple of tests of the simple API.