Improve error reporting when a function is called with wrong number of arguments
Accept functions without arguments
Fix double invocation side-effect when passing a function to return_string() macro, like in return_string(f(...))
Implement "magic" module based on Armin Buescher's original idea.