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.

`Object.keys( node.properties )` should only contain properties defined by the application and not include the `created` and `deleted` meta events. Similarly for `methods` and `events`, and also `children` for `added` and `removed`.