Implemented LowerVSELECT to custom lower some instructions.

No functionality change intended. The types that previously were set to
lower as Expand or Legal are doing the same thing with this lowering
function.
Added a test where we can't emit blend+immediate.
Fixed sse4.1 tests.
Fixed legal AVX blend tests.
Fixed non-legal blend tests (vectors will be split).
Fixed SSE4.1 blend tests to expect BLENDI.
Addedd avx2 blend+imm tests.
Fixed non-legal vector tests for lowering IR selects.
Fixed a few blend/shuf tests.
Lower vselects into X86ISD::BLENDI when appropriate.

LowerVSELECT will, if possible, generate a X86ISD::BLENDI DAG node if the
condition is constant and we can emit that instruction, given the
subtarget.

This is not enough for all cases. An additional SELECTCombine optimization
will be committed.
Implemented special cases for PerformVSELECTCombine.

vselects with constant masks, after legalization, will get turned into
specialized shuffle_vectors so they can be matched to blend+imm
instructions. Fixed some tests.