Second version of !33, taking Zeb's suggestions.
The refactoring allowed to encompass all remaining features of the patch series in these 4 patches.
The remaining patches (PART 3/3) just contain additional tests: https://gitlab.winehq.org/fcasas/vkd3d/-/commits/complex_broadcasts_4/
-- v2: vkd3d-shader/hlsl: Support explicit cast between component-wise compatible types. vkd3d-shader/hlsl: Support implicit casts between component-wise equal types. vkd3d-shader/hlsl: Remove incorrect criteria for accepting implicit casts. vkd3d-shader/hlsl: Handle complex types in add_cast(). tests: Add additional tests for implicit casts that should fail. vkd3d-shader/hlsl: Rename "t1" and "t2" arguments as "src" and "dst".