Revert "Revert r341269: [Constant Hoisting] Hoisting Constant GEP Expressions"

Reland r341269. Use std::stable_sort when sorting constant condidates.

Reverting commit, r341365:

Revert r341269: [Constant Hoisting] Hoisting Constant GEP Expressions One of the tests is failing 50% of the time when expensive checks are enabled. Not sure how deep the problem is so just reverting while the author can investigate so that the bots stop repeatedly failing and blaming things incorrectly. Will respond with details on the original commit.

Original commit, r341269:

[Constant Hoisting] Hoisting Constant GEP Expressions Leverage existing logic in constant hoisting pass to transform constant GEP expressions sharing the same base global variable. Multi-dimensional GEPs are rewritten into single-dimensional GEPs. https://reviews.llvm.org/D51396

Differential Revision: https://reviews.llvm.org/D51654