This extends the rules for when a call instruction is deemed to be an

FPMathOperator, which is based on the type of the call (i.e. the return

type of the function being called). Previously we only allowed

floating-point and vector-of-floating-point types. Now we also allow

arrays (nested to any depth) of floating-point and

vector-of-floating-point types.

This was motivated by llpc, the pipeline compiler for AMD GPUs

(https://github.com/GPUOpen-Drivers/llpc). llpc has many math library

functions that operate on vectors, typically represented as <4 x float>,

and some that operate on matrices, typically represented as

[4 x <4 x float>], and it's useful to be able to decorate calls to all

of them with fast math flags.