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.

See here for the original compiler error:

http://boost.2283326.n4.nabble.com/1-56-0-Release-candidates-available-tp4665702p4665763.html