Simplify uniqAway

This does two things:

- Eliminate all uses of Unique.deriveUnique, which was quite easy to mis-use and extremely subtle.
- Rename the previous "derived unique" notion to "local unique". This is possible because the only places where
`uniqAway`can be safely used are those where local uniqueness (with respect to some InScopeSet) is sufficient. - Rework the implementation of VarEnv.uniqAway, as discussed in Trac #17462. This should make the operation significantly more efficient than its previous iterative implementation..

Metric Decrease:

T9872c T12227 T9233 T14683 T5030 T12545 hie002

Metric Increase:

T9961