Remove another redundant forwarder
Elucidate ambiguous error issuing. Remove over-abstraction.

The only functional difference is that I pulled the if-erroneous check out:

```
-    def issueAmbiguousError(pre: Type, sym1: Symbol, sym2: Symbol, err: AbsTypeError) {
-      issueCommon(err) { case _ if ambiguousErrors =>
-        if (!pre.isErroneous && !sym1.isErroneous && !sym2.isErroneous)
```

The erroneousness is now checked in `issueAmbiguousTypeErrorUnlessErroneous`,
before even constructing the error message.

I'd like to state for the record that the if-erroneous in the
case of the partial function looked super-dodgy: it meant that,
when `ambiguousErrors`, `issueCommon` would not get to the `else` branches
that buffer/throw, and if the erroneous condition was met,
nothing would be issued/buffered/thrown.

This refactoring makes this much more clear, I'd say.
Remove over-generalization in diagnostics

Once we get the next diagnostic, lets encapsulate them in an
object, with a boolean flag for each one when it needs to trigger,
and a nice message that should be presented to our delighted user.