binomial no longer uses Float64 internally.

Replaces the old accumulation step, using `x=*(nn::Float64, rr::Float64)`,
with `x::T=div(widemul(x,nn), rr)` as suggested by @JeffBezanson.

Previously, `binomial(54,23)` computed the wrong answer. The new thresholds are:

type | arguments | failure mode
--- | --- | ---
`Int32` | (34,16) | integer overflow (throws `OverflowError()`)
`Int64` | (67,29) | integer overflow (throws `OverflowError()`)
`Int128` | (131,63) | integer overflow (throws `OverflowError()`)

Fix #6154.