Architectures other than x86 support more than 256 interrupt sources,
so using `u8`s for interrupt numbers is not appropriate.
Instead, introduce a new `DistinctNumeric` "InterruptNumber" with an
underlying type of `size_t`.
Using a DistinctNumeric ensures that we don't accidentally convert
interrupt numbers to `u8`s (again).
Some places previously used `size_t`s for interrupts numbers, convert
them to `InteruptNumber`s as well.
Additionally, change the iteration variable of two for loops to avoid
'-Werror=sign-compare' errors.