Fixing up the std::forwards everywhere to be used correctly
Converted has_bind into a two layer SFINAE and other misc fixes so that it will compile on g++