add this.subscriptions in listenTo if missing

By setting this.subscriptions=[] inside listenTo if previously missing,
and adding guards in listenerMethods.hasListener and
listenerMixin.componentWillUnmount, we can get rid of lots of setup
cruft.