Switch to transformers (from mtl)

This is just for one module; the AnalysisMonad still uses mtl
for convenience.
Snapshot progress on feature extraction

The features in this commit actually seem to be pretty powerful
and useful.  Prior attempts tried to extrapolate from unknown
functions too aggressively.
Remove some unneeded debugging calls
Add witness information for codes learned by generalizing
Update a comment
Add witness information for success codes discovered
Add a more selective model of success

Now, in order to be a success indicator, a function whose error
return is ignored must be followed by some other non-return
non-phi non-direct-branch code.  The idea is to try to avoid flagging
cleanup code with an ignored return code as a success.

It may be worth expanding this so that a basic block of cleanup code
(e.g. free; free; free;) could also be handled.
Only analyze functions that could return an error.

There is now a check to ignore functions that are trivially boolean
or always return 1 or 0.  This removes a large source of errors where
we would classify boolean returns as error codes, polluting all
of the results after that.
Aggressively remove successes from error descriptors

Once we learn something is a success (by the new majority criterion),
never consider a success code to be an error code, even if we
previously thought so.

This works because we aren't classifying boolean functions anymore.

This change also modifies how error code summaries are used.  Before,
only the first FAReportsErrors annotation would be used.  Now all are
used.

Furthermore, for transitive errors, the error action is dropped because
only the callee takes that action - the caller does not.
Fix the boolean function detection.

The detector flattens phi nodes into a list of values before
inspecting them; it used to leave the phi node itself in, which
threw off the boolean function detection.

This change removes the phi node from the list.
Eliminate empty error report summaries

The transitive reporter would produce empty summaries;
suppress those.
Addressed fixme
Remove commented out code

This code is obsolete reporting code (the general reporting
infrastructure takes care of it now).