Use vararg macros for block arguments

Otherwise, any commas _within_ the blocks will splice the argument list, causing confusing errors.