Split paircmp_value from paircmp_op. paircmp_value is trinary (and so can be used as cmp function in btree) paircmp_op is just binary.
Formatting and extra error messages
Fix operation of fr_strerror()

A while back a flag was added to fr_strerror() to stop the same error message being output multiple times (and leading to confusing debug output).

Unfortunately the macro for RERROR() and pals, inadvertently called fr_strerror() multiple times as ## __VA_ARGS__ was passed both to module_failure_msg() and radlog_request(), with the arguments to the macro being evaluated once per call.

The solution is to switch the logging functions to use va_list instead of the ellipses, add a helper to convert ## __VA_ARGS__ into va_list, and then use va_copy to create a copy of the arguments for the radlog_request() call.

As a side effect, it appears to of enabled printf format validation for more macros, so the next commit will be to fix all the places where that was previously unreported...
Fixup format strings