Fix behavior of some native related code w/r to asymmetrical SIMD ISA

Soem architecture have an asymmetric set of types (like int64 but no double) that
make some code not as generic as they should be anymore. More specifically, it is
invalid on those architectures to try to build

  native<U,some_extension>

for any arbitrary U. The correct way is to use vector_of so the proper emulated
type will be selected if U would be not available.