Fixed testgen to generate the right names/values

Argnames and argvalues would get out of sync because fields lookup tried
searching for fields names in the yaml as well as using as a special
arg. This would offset the argnames and argvalues, leading to severe
problems. This only occured if a user requests a special arg, or if the
user requests specialargs out of order from the sepcial arg typemap.
Not quite sure how to test it myself (would probably need the failing json), but this seems to be the core idea, which is filling out argvalues specifically based on argnames. That makes a lot of sense.

@psav: Should there be an `else:` clause on this if/elif chain to log that an argname didn't get a value, or would it be better to error out here?