A reasonably fast and tidy C++ implemention of signals/slots