DeepEqualityComparer is cheap now - no need for singleton.
Allow for different string comparison types.
Minor changes: renamings & a change to implicit interface implementation.