Infer the width of constants

It turns out that life is significantly easier if I infer the widths
of constants.  The reason I wasn't doing this is because I kind of
just have to guess at the width of shift offsets, but I think what
I've done is probably OK...