Devectorize flags in favor of bitwise operators

This is a proposal based on #76.

I opted not to take the enum route for a number of reasons. Instead, I'm using a thin wrapper struct with a single u32 field. This ensures the size of a flag is 4 bytes; an enum is larger - at least 8 bytes due to the constructor on `___Raw(...)`. The wrapper struct also eliminates the need to duplicate the flags into a `to_ll()` function since each wrapper carries its own numerical representation. Thanks to SiegeLord (RustAllegro) for the idea.

These changes eliminate the marshaling code required to convert vectors to integers and vice versa. The resulting code is much easier to follow.