Use empty `enum`s for opaque handles to improve safety
Use fixed width integral types

`uint` and `int` change depending on the system, so `u32` and `i32` are probably better choices.