This fixes several cases in the new vector shuffle lowering algorithm which would generate redundant shuffle instructions for the sake of simplicity.
I'm also deleting a testcase which was somewhat ridiculous. It was checking for a bug in 2007 about incorrectly transforming shuffles by looking for the string "-86" in the output of a pretty substantial function. This test case doesn't seem to have any value at this point.
Builds on top of: http://reviews.llvm.org/D4225
Since we're already on the X86 backend, could we start calling these functions PerformX86ShuffleCombine? It's not like they're generic for more targets.
I know “Target” is what's being used everywhere else, but I'd prefer more specific naming.