Track method changes in the kernel registry.

References #1662.
Replace `jQuery.each` with `Object.keys` to remove dependency on jQuery.
Only call `model.callingMethod` until the first driver returns a result.
Remove the unneeded `methodValue` parameter from `model.callingMethod`.
Define `kernel.setMethod` and `kernel.getMethod`.
New utility functions to convert between Handlers and functions.
Implement `settingMethod`/ `gettingMethod`; send changes through the kernel.
Replicate method changes.
Detect spacing to retain round-trip formatting in most cases.
Kernel functions shouldn't be called as methods on the driver.
Support keyed and indexed collections in preparation for listener tracking.

- Add `indexedCollectionPrototype` as a parallel to
  `nodeCollectionPrototype` for tracking event listeners and other
  ordered, id-based members. (Should for `node.children` in the future.)

 - Rename `nodeCollectionPrototype` to `keyedCollectionPrototype`.

 - Accept values for the collection `existing` members to be used for
   kernel-authoritative data about the member, such as event parameters
   and listener ids.

- Collect the added/removed/changed bits into one object per collection
  and allow for detailed change state. The detail will include listener
  changes within events.

- Support ordered change lists for indexed collections so that patches
  may apply members added in the necessary order.
Record creations and deletions in the registry.

- Include "added" and "changed" members in the patch data. Previously
  creations were as changes, like any other change.

- The replication data still can't indicate deletions.
Make the registry `collection.existing` objects enumerable.

The `nodes.existing[id].{properties,methods,events}.existing` fields are
created using `Object.create` descriptors, but they weren't setting the
`enumerable` flag. Define new utility functions to build common
`Object.defineProperty` descriptors, and use them in place of the
literal descriptor objects.
Propagate registry collection changes to parent collections.
Support recording events in the node registry.
Register events in the node registry.
Track listeners by ID. Pass as a `Handler` instead of a `function`.
`kernel.[sg]etEvent`, `kernel.[sg]etEventListener`.
Replicate events.