repeated eval of macro arg incorrect, inefficient

repeated evalulation of macro argument for test condition can be incorrect (e.g. re-performing an atomic operation, or repeating a modifying or destructive action) and can be very inefficient (e.g. doubling the amount of work to evaluate expensive components of the test condition)

In addition to correctness, this patch reduces compilation time for optimized build of test drivers, notably a >25% reduction in compilation time for bslstl_hashtable.t.cpp, currently the most expensive bsl test driver to compile.