Revamp success code recognition
Revamp success code recognition

The old method was just fundamentally wrong.  It looked at return codes
checked against values that did not indicate an error.  This could
basically just identify bad error-handling code.

Now, look for functions that can return values whose return values are
not checked at all.  There is still a bit of a problem: one such
function called to "clean up" on an error-handling branch looks like
a success code.  Will have to add some provision to deal with this.

Other than that, the new results are much better and simpler to reason
about.  This also reduces the number of theorem prover calls (not that
it was a problem before).

travitch/foreign-inference,travitch/foreign-inference