Implement higher-order combinators for LLVM backend
This will require figuring out a way to avoid excessive numbers of memory allocations so achieve the original goal of outperforming the packrat backend - possibly the LLVM backend will end up maintaining its own stack somewhere. At this point, this is the primary task needed to get the LLVM backend to a functionally complete state.