Move dead store elimination to a separate irg walk.

optimize_load can introduce dead stores, which are not removed, because
they have already been visited (the irg is walked from Start to End).

This commit adds a second irg walk for dead store elimination after the
other optimizations have run, and removes dead store elimination from the
first walk.
Kill unneeded operands when killing Stores.

After killing a store (e.g. if it is dead), its Store value can be killed,
if no other node uses it. We can use the code in reduce_adr_usage for that,
which also works for non-pointers.

This commit adds a new function kill_and_reduce_usage, which works for Load
and Store nodes. It kills the node and all Loads on which only the killed
node depends.