Add type requirement function + move type utilities to typeutils module
Implement bitwise and, or and xor