Add a separate target-specific pass for address mode optimization.

This pass comes immediately before lowering, and it may slightly
disrupt liveness information because of what is essentially copy
propagation going on.  As such, code lowering shouldn't depend on
accurate liveness unless liveness analysis is rerun.