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).
Oh, you are correct.  In that case, uint32 is unnecessarily big.  On x86, the bit count argument is either an immediate byte embedded in the instruction, or a 1 byte register.  And given that uintp is supposed to be the size of a pointer, I don't know that it makes sense here.  I would vote to remove the comment, and leave things uint32.