code: function addListener(type, listener, context) {
  
  		var typeName,
  		    filter,
  		    target,
  		    entry;
  
  		// Throw an error if no valid listener function is given
  		if (typeof listener !== 'function') {
  			throw TypeError('listener must be a function');
  		}
  
  		// Get the typename & filter data
  		if (typeof type === 'string') {
  			target = this.simpleListeners;
  			typeName = type;
  			entry = [listener, null, context||null];
  		} else {
  			target = this.filterListeners;
  
  			if (typeof type.type === 'string') {
  				typeName = type.type;
  			} else {
  				typeName = '';
  			}
  
  			filter = type;
  			entry = [listener, filter, context||null];
  		}
  
  		// Emit the 'newListener' event
  		if (this.simpleListeners.newListener || this.filterListeners.newListener) {
  			this.emit('newListener', type, listener.listener ? listener.listener : listener, typeName);
  		}
  
  		if (!target[typeName]) {
  			target[typeName] = [];
  			this.listenTypes.push(typeName);
  		}
  
  		target[typeName].push(entry);
  
  		return this;
  	}
docs: Add an event listener
  
  @author   Jelle De Loecker   <jelle@develry.be>
  @since    0.1.3
  @version  0.1.4
  
  @param    {String|Object}   type
  @param    {Function}        listener
  @param    {Object}          context
  
  @return   {Informer}