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.
I find the last sentence slightly misleading. For statements of the form,

    Printer(...) << a << b;

it's not the const references that keep Printer() alive but the simpler rule that temporaries live until the end of the full expression they appear in. 

On a more general note, I like the notational convenience the current design affords, but its use of const references and mutable leads to some really tricky corner cases. Consider

    {
      const print &p = print(user_context);    // extends lifetime of temporary to lifetime of p
      p << "Hello";
      print(user_context) << "World";
    }

which prints "WorldHello" and

    const print &p = print(user_context) << "Hello";  // beware: lifetime extension not transitive
    p << "World";

which is undefined since the temporary is destroyed after the first line (at least if I my understanding of C++ lifetime rules is correct).