Removing external dependency on boost::signals2