Heterogenous tuple unpacking in native mode

This allows code such as `a, (b, c) = (1, (2.5, 3j))` to be compilable in native mode, and is a necessary first step to implement support for e.g. enumerate().