Make splat automatic for all elementwise functions

This commit does 3 things:
 - remove all explicit mixed scalar/simd variants for operators
 - make elementwise_<Tag> call splat if at least one value is a vector and one is a scalar, and if all vector values are on the same extension
 - make map work with cases like `map(multiplies_, native<long int, X>, int)`

The implementation could possibly be simplified, in particular I'd like a review of the vector_on_ext logic coupled with scalar_of, maybe there is something better to use.