Further tweaks to the new error messages.

Here's a tentatively short error message.
File "tmp/test.mz", line 3, characters 6-7:

Could not obtain the following permission:
  /x_47 @ =x*, =y*
because all we have is:
  /x_47 @ int::int

Variable /x_47 is defined as follows.
File "tmp/test.mz", line 3, characters 6-7:

  add 1 2
      ^
More tweaks to the new error reporting logic.

When no rule was applicable in a branch, and other branches agree on the same
cause for failure, keep the latter explanation as the "human-readable" reason
for failure.