Fix r15779 and generalise. Also implement - -a - b -> -(a + b) - a - -b -> a + b
Fix r15779 and generalise. Also implement
- -a - b -> -(a + b)
- a - -b -> a + b

[r15781]

8l/libfirm,libfirm/libfirm,jonashaag/libfirm,8l/libfirm,killbug2004/libfirm,libfirm/libfirm,MatzeB/libfirm,killbug2004/libfirm,davidgiven/libfirm,killbug2004/libfirm,jonashaag/libfirm,killbug2004/libfirm,MatzeB/libfirm,8l/libfirm,8l/libfirm,killbug2004/libfirm,MatzeB/libfirm,killbug2004/libfirm,jonashaag/libfirm,davidgiven/libfirm,jonashaag/libfirm,MatzeB/libfirm,libfirm/libfirm,davidgiven/libfirm,libfirm/libfirm,davidgiven/libfirm,jonashaag/libfirm,8l/libfirm,davidgiven/libfirm,davidgiven/libfirm,MatzeB/libfirm,MatzeB/libfirm,MatzeB/libfirm,killbug2004/libfirm,8l/libfirm,libfirm/libfirm,davidgiven/libfirm,jonashaag/libfirm,8l/libfirm,jonashaag/libfirm