[mdoc] Fix unit tests.

3d3fe6af (among other commits...) "broke" the `mdoc` unit tests, as it
did two things:

 1. It added a new codepath calling string.Format(), thus introducing
    a new set of exceptions.
 2. Due to an `mdoc` bug, (1) resulted in a stack overflow on OS X.

(1) demonstrates that the mdoc unit tests might be too brittle.

(2) was fixed in 04bf9ad.

The problem with 04bf9ad, though, is that it resulted in a gigantic
~212MB diff, because while the recursion was "fixed", we could still
process the same method multiple times, resulting in _lots_ of
duplication, e.g. System.String.get_Chars() would be repeated hundreds
of times for a given exception.

Improve the source reporting mechanism so that instead of a
List<MemberReference> we use a HashSet<MemberReference>, listing each
source location _once_ instead of repeating them.

The _formatting_ of the <exception/> element is also changed so that
each source location is on its own line, making it easier to read and
review the locations.