Summary: `malloc` is supposed to return `nullptr` if it fails, not exit with an error code.
Summary: This patch removes the ad-hoc parsing that I used previously and replaces it with the LLVM CommnadLine interface. This doesn't change any functionality, but makes it easier to maintain.
Summary: I am going to rework these tools to just me LLVM tools. This patch is pretty much NFC to set up the CMake for that.