I've made a major change to the API of ActionInvocation in trunk.
The order of action arguments is only important between the service descriptor and the SOAP action message. There is no obvious reason for that so I somehow got it into my head that the order of arguments is as printed in the UPnP specs and that they are always send and received in that order. It turns out I was wrong. Input and output argument values now have to be set by name. Cling still enforces correct order of arguments in the descriptor and action messages.