preproc: add %exitmacro support and clean up recursive macro handling