util: only do flag_* operations if the bit fits
This silently ignores any bit higher than the target storage (e.g. flag_set(some_uint32, 33)) but that's still better than silently writing into random memory.
Add a c file for util-bits.h as well - only contains the tests but at least that way those are picked up like all other util tests.