Allow a subexpression to be used at multiple types.

I don't think this can be triggered using the high-level Ivory API, but
it could happen if GHC gets cleverer or a caller manipulates Expr values
directly.
Do CSE over whole procedures, not single statements.