Make object compat work with more positional args

Currently object_compat would break if there is more than one positional
argument after instance, since the instance will be passed as a keyword
argument and there will be a positional argument passed as instance,
once we get to the actual function call - a TypeError will be thrown
similar to:

    TypeError: ... got multiple values for keyword argument 'instance'

This patch makes sure that the instance (if not found in kwargs) is put
back in the args tuple.

Change-Id: I5e9085e9f1bc1502f627eb9b206376cf39d58f39