[APInt] Enable APInt to support zero bit integers.

Motivation: APInt not supporting zero bit values leads to

a lot of special cases in various bits of code, particularly

when using APInt as a bit vector (where you want to start with

zero bits and then concat on more. This is particularly

challenging in the CIRCT project, where the absence of zero-bit

ConstantOp forces duplication of ops and makes instcombine-like

logic far more complicated.

Approach: zero bit integers are weird. There are two reasonable

approaches: either make it illegal to do general arithmetic on

them (e.g. sign extends), or treat them as as implicitly having

a zero value. This patch takes the conservative approach, which

enables their use in bitvector applications.

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