Fix width inference for +, - on literals

Before, UInt(3) + UInt(1) would result in UInt(4).  This seems sensible, but
it is inconsistent with Chisel's modular arithmetic behavior when the operands
to + are not literals.  For example, Reg(next=UInt(3)) + Reg(next=UInt(1))
gives the value UInt(0).  The fix is to use the same width inference rules
for + and -, even on literals, so that UInt(3) + UInt(1) gives UInt(0).

In the past, this would have manifested as a discrepancy when constant folding
was disabled/enabled.  It's possible some code relies on the old behavior, but
this needs to be fixed.
Implement Fill(n, bool) with unary -