Add a new pass to undo harmful instcombines (#550)

Fixes #549

* New pass to undo harmful instcombine transforms
  * Currently handles two cases that produce wide vectors seen in CTS
* Add tests
diff --git a/lib/Passes.cpp b/lib/Passes.cpp
index 872a75d..4de09f1 100644
--- a/lib/Passes.cpp
+++ b/lib/Passes.cpp
@@ -50,6 +50,7 @@
   initializeUndoBoolPassPass(r);
   initializeUndoByvalPassPass(r);
   initializeUndoGetElementPtrConstantExprPassPass(r);
+  initializeUndoInstCombinePassPass(r);
   initializeUndoSRetPassPass(r);
   initializeUndoTranslateSamplerFoldPassPass(r);
   initializeUndoTruncatedSwitchConditionPassPass(r);