SI-6123: for -explaintypes, don't explain errors which won't be reported

-explainTypes means that only type tests which *fail* should be reported in more
detail by using explainTypes. Hence, callers of explainTypes should check if
type errors are being ignored, by calling context.reportErrors.
Note that this patch does not fix all occurrences, but only the ones which
showed up during debugging. I have fixed the other ones, but the change there
might turn out not to be needed.
After I run more extensive tests, we can discuss whether to merge those other
changes.

Also, in ContextErrors, there's no need to check
`settings.explaintypes.value` *before* calling `explainTypes`
which will check it again. Fix that.
SI-6123: don't report successful subtype checks in macro expansion

Fix regression introduced in 78f9ef3906c78413ff8835fdad3849bfe5516be2.
-explainTypes asks for more detailed reporting of errors, not
tracing of successful typechecking, and this applies also to macros.
Try to cleanup checkSubType a bit

checkSubType should not implement -explainTypes using its own buggy variant of
explain.
A better cleanup is wanted, in fact - see comment and next commit.
Fix <:< wrt -explainTypes

Instead of using the previous commit, I believe a better fix is
ensure that <:< respects explainSwitch even when its parameters
both point to the same object.
This affects, in addition, all calls to explainTypes; I verified that
they do not similarly workaround this problem.

As an alternative, the behavior of <:< might be intended (since it's
copy-pasted in stat_<:< and weak_<:<), but then it should be documented,
and probably the behavior of checkSubType should be fixed for
consistency.
Finally, for what reason do macros have their own checkSubType? Is there
really no other method for doing the same check? That seems rather
surprising.