generic findRoot

Reason: allows findRoot be used in `@safe @nogc nothrow` code.
Same here `is(typeof(f(T.init)) == R, R) && isFloatingPoint!R`