Enhance the event functions to allow components to listen to other components. closes #1544

Automatically cleans up listeners when either component is diposed.
Updated tests and many uses of player.on() to use the new methods.

Also changed how a component was determined in on() so mock players could be used