Only allow word arguments to macro conditionals.

  Also cause an error if macro conditionals are not closed at
end of input.
Simplify a bit logic saving a macro expansion vector contents.
Objects internal to oread.c are not gc protected guaranteed.

  The condition some objects could be collected during the window
of time they were unreferenced was when calling orenew_vector, so
the calls were replaced with a macro with an extra object argument,
that ensures the possibly gc unprotected object is protected; symbols
and strings are always protected in the global caches, but not numbers.