Use a NonEmpty list for virtual invoke arguments

We require that all virtual invokes have a receiver object, so represent
that statically with a NonEmpty list.