Fix DEFPROGRAM-SHORTCUT to be compilation-friendly

It caused problems on SBCL because the macroexpansion contained struct
literals. ("Don't know how to dump #S(...)" errors)

I've modified the lambda-list of the macro so that the default values
are not evaluated, just like when they would've been supplied
explicitly.

I've also made it so that the definition code for the run-or-pull
shortcut isn't in the macroexpansion when PULLP is NIL.