Simplify specification of FN::result_type

I don't like how the  type `FW` is used. You introduce a new type with a weak result  type, then use that to say your type has a weak result type, but the type of `FW` is not really defined (forwarding call wrapper is a concept, not a type).

I suggest removing `FW` and using `reference_wrapper<FD>` instead, as that has a weak result type.