Add Serial.Printf using va_args and vprinf

I'm going to be Contrarian here, but...

Variable lists of parameters is one of the most ill-conceived and poorly executed notions in c.
Overloaded operators is one of the most ill-conceived and poorly executed notions in c++.

They both undermind the notion of a strongly-typed language and make for code that is hard to understand and hard to maintain. There is a reason that subsequent languages have abandonned them.

There's nothing unreasonable about a) using functions to perform the job of functions, rather than operators and format strings; and b) calling a function once for every time you need to use it. Saving keystrokes costs you time in the long run.