Add C++11 variadic template versions for a number of variable length argument list cases.

Figured I'd open this up for review/commentary. Not particularly critical to merge it soon, but it may be useful for a few people to remove limits on the number of dimensions allows.
Haha, yeah. It means this has inline linkage, but please don't actually inline it. 

The reason is that the stack-trace-based error messages report the error as being at the last line before code entered the Halide:: namespace. Inlining parts of the Halide namespace into user code makes the error messages really confusing, because they say "error in Halide.h at line 12387: " instead of user "error at your_code.cpp line 45: ".