Avoid `arguments` in Path._writeData().

It's not the most elegant patch, but `arguments` is terrible for
performance. The patch avoids ~50 MiB of array allocations when running
the box2d example for about 30 seconds.

Also, the old _writeData() looks to be buggy -- if `argc` is 1 or 3 or 5
or 6, one too many values will be written. (1 and 3 don't occur in the
current code, but 5 and 6 do.) It's ironic that, having used `arguments`
earlier, this function didn't then use a loop to do the writing in a
more straightforward fashion.