Make declaration of specialized signatures less repetitive

Instead of hard-coding all possible signatures for all specialized functions, generate them. This relies on ordering of numba types (according to bitwidth).
@sklam, can you say something about the usage of types.uintp?  Should we switch the return types of the bitwise shift operator?