r300: presubtract swizzle fixes for R300/R400
I started with what I thought would be a simple single fix for #7554 (closed), however in the end there were 4 different issues all related to presubtract and non-native swizzle. I hope I got them all but hard to say.