Beginning work on the new instance of shape splitting.

Does not do much useful yet - in particular, it does not insert call
to the shape and value slices.
Turn dead function removal into its own pass.

This may theoretically be slower in some cases, as we
proceed to simplify dead functions, but I doubt it happens
often.  This makes testing the simplifier easier, as you
can run it on dead functions without having them disappear.