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.
May I suggest we choose a single idiom for C++11 detection, specifically, either

  #if __cplusplus > 199711L  // C++11 or later

or 

  #if __cplusplus <= 199711L  // not C++11

I've been using the former in my branch, you're using the latter here. I don't care which we use, but the code will be easier to read if we use one or the other.