extract: return signed integer for int*x* arguments, unsigned only for uint*x*

When I used extract with int32x4, I was surprised that for negative numbers it returned unsigned integers, so e.g. instead of -10 I got 4294967288 :o). This patch should return correct signed integers if you use signed integer vectors.