Added the safe_bool utility class/header. Used it to replace to current 'safe bool' implementation (which was also buggy because it used the same type for all function<> instantiations).
Fixed a bug that caused a wrong vtable_for_functor() overload to be chosen when assigning function<> object to another function<> object of the same type/instantiation.
Minor other cleanup and stylistic changes.