Constant folding optimizations for sDivMod/sQuotRem

Add the following optimizations:

 0 `divMod` x = (0, 0)
 0 `quotRem` x = (0, 0)
 x `divMod` 1 = (x, 0)
 x `quotRem` 1 = (x, 0)

Currently refraining from cases when y is -1, since it only holds for
unsigned types. Also, for signed cases the decision around minBound is
problematic..