Implement fma and mad

I've implemented fma(x,y,z) and mad(x,y,z), as a follow-up to #6330. I'd be happy to receive comments.

`muladd_float` seems to be defined as an intrinisic, but the intrinsic appears to be unused by the rest of the patch.