Avoid multiple evaluation in some macros.

There was at least one real bug caused by the multiple evaluation of 2nd
argument to SC_set_result(). SC_pre_execute() passed QR_Constructor() call
as the 2nd argument, so we ended up creating extra result sets that were
leaked.
Add test for SQLNumResultCols
Add test case for INSERT RETURNING and SQLNumResultCols().

This was useful in reproducing a memory leak in SQLNumResultCols().
Merge branch 'master' into master-with-testcases