[SDAG] Add a fallback multiplication expansion

LegalizeIntegerTypes does not have a way to expand multiplications for large

integer types (i.e. larger than twice the native bit width). There's no

standard runtime call to use in that case, and so we'd just assert.

Unfortunately, as it turns out, it is possible to hit this case from

standard-ish C code in rare cases. A particular case a user ran into yesterday

involved an __int128 induction variable and a loop with a quadratic (not

linear) recurrence which triggered some backend logic using SCEVExpander. In

this case, the BinomialCoefficient code in SCEV generates some i129 variables,

which get widened to i256. At a high level, this is not actually good (i.e. the

underlying optimization, PPCLoopPreIncPrep, should not be transforming the loop

in question for performance reasons), but regardless, the backend shouldn't

crash because of cost-modeling issues in the optimizer.

This is a straightforward implementation of the multiplication expansion, based

on the algorithm in Hacker's Delight. I validated it against the code for the

mul256b function from http://locklessinc.com/articles/256bit_arithmetic/ using

random inputs. There should be no functional change for previously-working code

(the new expansion code only replaces an assert).

Fixes PR19797.