Clean up `EnumSet`

Make `EnumSet` portable by using a fixed-size unsigned intger, `u32` as
storage. The previous choice of `uint` created portability hazards as the error
checking is done at runtime.

Mark the `from_u32` method of the trait `CLike` as unsafe, as it is supposed to
be implemented without error checking.

Code using `EnumSet` needs to be updated to use `u32`s.
why?

(sorry for this annoying code review. too many things look good and I gotta be useful for SOMETHING)