For number types, we rely on classic C types (char, short, int, long) to be the correct sizes. For precise bit widths, use standard intN_t and uintN_t. For size_t, just use system size_t.
Since we no longer have recursive includes, we don't need them. Removing the protections uncovered a couple of accidental double-includes: good.