A light-weight alternative to Boost::Signals2 and SigSlot++