Rephrase initializers to work with VC++ 2012

VS2012 does not grok C++11 initializer lists much at all, so we rewrite
them into temporary arrays that are iterated over or initialized with.