Initial pass at removing varargs from the runtime.

This is necessary to avoid calling convention woes on nacl and windows.

Requires reworking AssertStmts to just take a string, so it touches a
lot of code.

Also required removing uses of halide_printf from the runtime, which
touches a lot of code there. It has been replaced with a std::cout-style
thing, which more closely matches how debugging prints work in the compiler.

This involved an implementation of float and double printing *shudder*.
Still, now we have platform-independent printing, and can remove the
windows-specific float printing hack too.

There are still a bunch of debug_prints in the runtime, with temporary
definitions of halide_printf and halide_error_varargs to make them work.
Fixing this is next.
Merge branch 'master' into no_varargs

Conflicts:
	Makefile
	src/Target.cpp
Remove halide_printf, halide_error_varargs usages from runtime
Merge branch 'master' into no_varargs
Remove use of varargs in cache.cpp

tuple buffers are now passed in an array. Involved adding a make_struct
intrinsic. It just dumps the Exprs into a struct on the stack and
returns the pointer to it.
Remove some more printfs in cache debug logic
Remove va_list helpers from runtime_internal
Remove one more instance of "..."
Correct some comments
Remove some remaining %s in runtime
Clarified comment.
Don't print ptx/opencl kernel source.
Clean up error handling on opencl kernel compilation failure.
Removed unnecessary const/mutable nonsense.
Remove reference to SPIR in windows scripts
Add missing mkdir to CMake build
Fix some indentation
Concat constant stringify arguments in the simplifier.
Merge branch 'master' into no_varargs

Conflicts:
	src/Simplify.cpp
	test/scripts/distrib_windows.ps1
Merge pull request #462 from halide/no_varargs

No varargs