Revert some output analysis changes

Revert to the original output parameter semantics.  Upon further
reflection, they were correct and produce much more convenient results.
There are some consequences of the decision, which are discussed in the
dissertation in the relevant section.
Move output parameter allocation to the Allocators analysis

It makes more sense here and that is how things are written up
in my dissertation.  Now the output parameter analysis is very low-level
and the allocator analysis depends on it.

One test (transitive output allocation) does not pass.  I know how to
fix it, and the next commit will take care of that.