fix rand(Float16|Float32) equal to 1

Cf. bug reported by @tkelman in #9301.
As noted by @ivarne, converting a Float64 different from 1 to Float16
or Float32 can produce a value equal to one, which doesn't agree with
the documented API.
So instead of converting, let's produce a Float16/Float32 in [1,2) at
the bit level, and then substract 1 (as was done in the array versions).
As a side effect, this also makes rand(Float16) about twice as fast.
fix #8853

See discussion in #8853, current recursion check fails for staged function.
Merge branch 'upstream-master' into fast-math

Conflicts:
	doc/helpdb.jl
Replace a bunch of tabs with spaces

for reference, these were found using grep -n -P '\t' */*.c* */*.h* src/*/*.c* src/*/*.h* */*.jl */*/*.jl */*/*/*.jl
Merge pull request #9440 from JuliaLang/jh/recursivestagedfix

fix #8853
Merge pull request #9387 from JuliaLang/rf/float16-equal1

fix rand(Float16|Float32) equal to 1
Merge branch 'upstream-master' into fast-math

Conflicts:
	ui/repl.c
Merge branch 'fast-math'