Collection events

Send meta events from the kernel into the application notifying the application about changes to the `children`, `properties`, `methods`, and `events` collections. Add pseudo events at `node.children.{added,removed}`, `node.properties.{created,initialized,deleted}`, `node.methods.{created,deleted}`, and `node.events.{created,deleted}` to manage listeners for the meta events.

@eric79, @allisoncorey, please review. @scottnc27603, @jessmartin, fyi.

Meta (namespaced) events aren't visible as application _events_ (in `node.events.*`) even though they use the event listening and firing machinery. They can only be fired by the kernel (or a driver with access to the kernel API, I guess).

Components see points to add listeners at `node.children.added`, `node.properties.created`, etc. But if they were to try to fire the event from there, they would only see an `undefined`.