Make overload resolution more elaborate

This change adds some better error experience for overload resolution. It also fixes bug #807.

One future goal that is not in this change: We should ideally instantiate all the signatures we give back for signature help.
Shorten to `inferenceFailureType`.