Modify ViewModel.Listen() method to be simpler to use.
Make the message-hander delegate type-param generic; so that implementations no longer are required to cast from IMessage.