Fix use-after-free complained by coverity

It's not really use-after-use, because the pointer is not dereferenced
Avoid assignment inside the macro call

This causes multiple assignments, which has undefined sequences
Check pointer against NULL

Reported by coverity
Correct integer type of a var

Or coverity complains:
CID 54796: Macro compares unsigned to 0 (NO_EFFECT)
unsigned_compare: This greater-than-or-equal-to-zero comparison of an unsigned value is always true. code >= 0U.
Avoid uninitialized var

Found by coverity
Fix the comparison between unsigned and negative

REBFLG is defined as unsigned, so "ccr < 0" is always false. However,
this function seems not to be really executed anywhere.

Found by coverity.
Add an assert to shut off coverity complains

Coverity issues various complains for unrealistic executive paths.
Do an early argument validation

This is not really necessary, but it helps coverity eliminate false
positives.
Add an assert for binary actions

To help coverity
Revert "Fix regressions"

This reverts commit 59a021cd313d5cdf152f7e2c2233b89ce417a5f7.

Prepare for another fix
Fix a regression

caused by 2d10448789f86445826be1f8dae1f868fae53516
"Shut off coverity complains on uninitialized variables"

and exposed by
>> to tuple! [1 2 3]
Fix crashes when commands are not called from the proper context

This will crash the interpreter:
>> reduce [reduce bind [text "hello"] import 'text]