go/ir: deduplicate sigma nodes
go/ir: deduplicate sigma nodes

In a function like

	func fn(x int) {
		y := x
		z := x
		if true {
			println(y, z)
		}
	}

there will be different allocs for y and z. When we lift the code, we
insert a sigma node for each alloc in the branch. Eventually, the alloc
gets replaced with the dominating store, the parameter x, and we end up
with two sigma nodes for the same value. This is unnecessary (and
confusing), so we deduplicate these sigma nodes.

Closes gh-1174

dominikh/go-tools,dominikh/go-tools,dominikh/go-tools,dominikh/go-tools