Modularizing LLVM codegen/JIT

Also, even in the latest release of clang/LLVM, some options can only be specified once:

$ clang++ -O2 -mllvm -unroll-threshold=100 -mllvm -unroll-threshold=200 hello.cc
clang (LLVM option parsing): for the --unroll-threshold option: may only occur zero or one times!

This check has only recently been removed, and will be effective in clang/LLVM 15.