bigint: avoid new allocations for small shifts
bigint: avoid new allocations for small shifts

Before:
    test shl               ... bench:       7,312 ns/iter (+/- 218)
    test shr               ... bench:       5,282 ns/iter (+/- 243)

After:
    test shl               ... bench:       4,946 ns/iter (+/- 88)
    test shr               ... bench:       4,121 ns/iter (+/- 52)

vks/num,rust-lang/num,rust-num/num-integer,koverstreet/num,rust-num/num,rust-num/num-integer,rust-num/num,vks/num,DonSheddow/num,rust-num/num-traits,koverstreet/num,rust-lang/num,rust-num/num-bigint,rust-num/num-traits,DonSheddow/num,rust-num/num-bigint