Adds a maximum recursion depth limitation to ShouldBeEquivalentTo.

Should fix issue #15 per suggestion by @dennisdoomen.  I considered implementing a repetition recognition algorithm to try to detect such occurrences, rather than a simple maximum-depth limitation.  However, I was not sure if there was a need for that and if it would worth the additional complexity.

This does not address the issue with `Formatter.ToString`  indicated in that issues's the comments by @marklam.