Split most of the work off into make/base.mk and allow for easy wrappers
to be created around that that can build with different instrumentation
in their own build directory.
Create wrappers for the following:
- release build
- debug build
- afl++ fuzzing build
- static analysis with clang
- clang memory sanitizer
- clang address/undefined sanitizer