Refactored arguments for Signal methods - cleaner, more extensible
Added support for propogated functions to pass the initial signal class
Added support for listeners to Signal when propogating signals
Added Connection factory method for creating connections