Remove some functions which are complicated to implement in SPIR-V due
to the use of ad-hoc struct types or pointers. I may add them back
later if there turns out to be some use for them.
Add inline definitions for some overloads taking mixed vector and scalar
arguments. SPIR-V operations require all operands to have the same
number of elements. Builtin functions are always inlined even if used
more than once.