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 think you're right. It's namespaced if there's more than one segment. Otherwise, it's a plain name, regardless of whether it's a simple string or an Array of length 1.

I think I was thinking that since application-space names will always be simple strings, and since namespaced names will always be Arrays, prefix Array-based names to ensure that they are distinct from any application names. But it's the additional segments that make it distinct--not the Array-ness.