WIP: Generalize float intrinsics

Unfortunately Float16 support is broken in LLVM (who [could](https://github.com/JuliaLang/julia/pull/3447) [have](https://github.com/JuliaLang/julia/issues/3081) guessed that a type not used by Clang is broken ...). 

Anyway, once I fix that in LLVM, this closes #3467