Fixed compilation with gcc 4.6 in C++11 mode

The compiler considers invoke() call ambiguous when the function object is actually a function pointer. This caused compilation errors in Boost.Coroutine, which uses invoke() through call_once(). Also added missing includes.
Merge pull request #21 from Lastique/patch-3

Fixed compilation with gcc 4.6 in C++11 mode