No varargs

This removes all use of varargs from the halide_runtime, with the exception of calls to android and ios logging functions. This solves nacl linking issues and some windows mess (e.g. we couldn't print floats properly on windows).

Ready for comments.
Ah, I didn't realize that the lifetime extension wasn't transitive. Interesting.

Given the simpler rule, I'll change it to regular refs. I don't think people will be very surprised when the second example is undefined.

Case 1 is still a little surprising. My goals were to mirror the usage of debug() in Halide proper (which in turn mirrors cerr/cout), and to print each message atomically, so you don't get a confusing soup when there are multiple threads going. As it stands the destructor turns into a call to write, which should be atomic for strings less than 4k.