Only consider finalized fields seen inside of finalizers (or called from finalizers)

This lets us ignore most uses of temporary heap objects stored in
structs that are then locally finalized.  An alternative might be to
require that the finalized field is reachable from some argument to
the function.
Add a fixed-point for the transfer analysis
Use `liftM f` instead of `>>= (return . f)
More liftM, removal of commented out code
Remove a 'flip'
liftM