Never fuse reduce and filter to reduce.
Move alias information into a separate representation.

This means that passes interested in aliasing/consumption information
are now responsible for tracking this on their own.

Some things are still broken: for example, fusion no longer properly
checks aliases, I think.

Also, the type checker will no longer save you when you mess up.