The XS code did not apply defaults properly

It was using av_push, which meant that if the first spec didn't have a default
and the next did, the default was in the wrong place in the returned array.