Add an UBSAN implementation and a new UBSAN switch to the make build. The implementation is taken from Onyx and handles most of the cases that should be needed for a kernel build. Floating point and fancy C++ CFI features are not supported yet. To build with UBSAN, pass UBSAN=1 to make such as: PROJECT=pc-x86-64-test make -jN UBSAN=1