Fix #1135: fast Floats + on-demand compliance for Floats.

Floats now use the built-in `Math.fround` for its operations if the built-in exists (in which case we hope the VM will optimize it).

Additionally, with a semantics config:
```scala
  set scalaJSSemantics ~= { _.withStrictFloats(true) }
```
the linker will produce strict floats, which always behave as on the JVM (32-bit precision). On VMs that do not support `Math.fround`, we use one of two polyfills: either one based on `Float32Array` if that is available, or a slow one that does not require anything fancy.
Yes, I debated that with myself. I'll move `genFround` to the last commit then.