Array init fix

I realized that the way we were generating array initializers was problematic because C++ does automatic type promotions in variable arguments. I've changed that by instead compiling initializers as a bunch of chained assignment method calls.