Manage listeners from the kernel

Have the kernel directly manage event listeners. Support namespaced event names.

The kernel will use a private namespace in `branch/collection-events` to send meta events into the application using names that won't conflict with any possible application event name. Additionally, the kernel will need to have direct knowledge of event listeners in order to replicate them correctly.

This is a predecessor to `branch/collection-events`, which uses the event mechanism for the kernel to deliver meta events into the application.

@eric79 , please review.

I don't disagree. But I think removing the blank line would be worse since it gloms the code to the last part of the comment only. (And further removing the empty lines within the comment would hurt readability of the comment.)

        /// Description.
        /// 
        /// @function
        /// 
        /// @param {ID} nodeID
        /// @param {String} eventName
        /// @param {Script} eventHandler
        /// @param {ID} eventContextID
        /// @param {String[]} eventPhases
        /// 
        /// @returns {}
        addingEventListener: [ /* nodeID, eventName, eventHandler, eventContextID, eventPhases */ ],

The alternatives I see are to add a separator (too strong I think, and extra work to format it correctly and keep the separator out of the jsdoc render):

        // -----------------------------------------------------------------------------------------

        /// Description.
        /// 
        /// @function
        /// 
        /// @param {ID} nodeID
        /// @param {String} eventName
        /// @param {Script} eventHandler
        /// @param {ID} eventContextID
        /// @param {String[]} eventPhases
        /// 
        /// @returns {}

        addingEventListener: [ /* nodeID, eventName, eventHandler, eventContextID, eventPhases */ ],

Or to expand the code bits:

        /// Description.
        /// 
        /// @function
        /// 
        /// @param {ID} nodeID
        /// @param {String} eventName
        /// @param {Script} eventHandler
        /// @param {ID} eventContextID
        /// @param {String[]} eventPhases
        /// 
        /// @returns {}

        addingEventListener: [ /*
            nodeID,
            eventName,
            eventHandler,
            eventContextID,
            eventPhases
        */ ],