fix #172, regression in compiling shift operations

Before d5c1a094ca116f8f54eca7a3ce24575b9def298c, we generated ir for shift operations (shl/shr/ushr, etc) where the size of the first operand was TargetBytesPerWord, instead of the "true" size.  Instead of directly reverting that accidental change, we should make the codegen portion tolerant of the real operand sizes.