generic findRoot

Reason: allows findRoot be used in `@safe @nogc nothrow` code.
The above 4 lines should simply check that DT is callable with 2 Ts and returns something that converts to bool, e.g. `is(typeof(tolerance(T.init, T.init)) : bool)`.