Fix tickets #10443 completely (SFINAE-friendly invoke).

I think @djowel 's fix (6cad6be) is incomplete. I propose a patch to fix completely.

This PR should fix [Test output: BP x86_64 C++11 - fusion - invoke / gcc-4.8.3~c11](http://www.boost.org/development/tests/develop/developer/output/BP%20x86_64%20C++11-boost-bin-v2-libs-fusion-test-invoke-test-gcc-4-8-3~c11-debug-debug-symbols-off.html) and similar failure.

Notes:
```
// A
template <class Func, class A, class Enable = void>
struct invoke_impl;

// B
template <class Func, class A>
struct invoke_impl<Func, A, typename result_of<Func(A)>::type>
{
     typedef typename result_of<Func(A)>::type type;
};

invoke_impl<int(*)(int), int>::type
// This doesn't match expected specialization (B), because result_of::type is `int`
// but `Enable` is `void` (defaulted by template declaration), and compile error.
```
c.f. http://melpon.org/wandbox/permlink/ffr4clbbSgDaWlr2