Handle argument passing more loosely to support arglist evolution

The method arguments are read more like a struct, collecting whatever is passed
in a hash indexed by the field number encountered. After all arguments are
processed, it is turned into an arg array by fetching the field numbers
declared in the method in the order they are declared.