resolve shift overflows by defining a custom shift
resolve shift overflows by defining a custom shift

Rust does not allow shifting by the integer size, so this defines new shifts
that first check the size, and return 0 when shifting by the integer size.

ruuda/claxon,ruuda/claxon,ruuda/claxon