Shifting an integer larger than its bit width can have undefined behavior. This not only fixes that issue, but also optimizes the shift functions.
Allows some limited 128bit integer math functions, primarily for the sake of performing calculations on nanosecond-based intervals of time