[X86] Teach how to combine AVX and AVX2 horizontal binop on packed 256-bit vectors.

This patch adds target combine rules to match:
 - [AVX] Horizontal add/sub of packed single/double precision floating point
   values from 256-bit vectors;
 - [AVX2] Horizontal add/sub of packed integer values from 256-bit vectors.