`loggableScript` utility.

- Replace the `kernel.execute` logger's script shortener with a new
  `loggableScript` function.

- Log script text for `createProperty` and `createMethod` using the
  utility.

- Related comment and formatting fixes.

References #3071.
Add kernel actions and driver handlers for managing event listeners.

Event namespaces will be known to the kernel but will not normally be
known by the drivers. Changes to an event's listeners need to pass
through the kernel so that a possible namespace may be encoded into the
name before the driver sees it.

The kernel will also need knowledge of the listeners for replication and
to check listened events for validity.

References #3095.
Manage JavaScript listeners through the kernel.

References #3095.
Support namespaced events to be used for node meta events.

Namespaced events will allow the kernel to use the normal event
listening/firing mechanism for meta events that are distinct from a
node's regular events.

Meta events will be used to announce changes to a node, such as adding
and removing children, creating and deleting properties, methods and
events, etc.

References #3076.
Specify event namespaces in `eventName` rather than in a new parameter.

References #3076.
Factor out the namespace name test. Accept `["name"]` as not namespaced.

References #3076.
`kernel.{createEvent,addEventListener,removeEventListener}` API comments.

References #3076.
Only create the per-event listener array on `addingEventListener`.

References #3076.
Fix the `["name"]` case. Interpret `[]` as namespaced, distinct from `""`.

References #3076.
Merge pull request #142 from virtual-world-framework/branch/kernel-listeners

Manage listeners from the kernel
Translate between kernel and model/javascript node references.

The translation is performed for each value (property value, method or
event parameter, or return value) that crosses between the kernel and
the model/javascript driver. This allows components to make persistent,
direct node references. Nodes may be assigned to properties and passed
through methods and events.

References #3088.
A kernel utility module.
Replicate node references.

Regular properties replicate as `{ propertyName: value, ... }`, or the
more general `{ propertyName: { value: value }, ... }`. Extend the
general form to encode properties containing node references as `{
propertyName: { node: nodeID }, ... }`.

The `node` field indicates that the property is a node reference instead
of a simple value. Using a distinict field ensures that the reference
won't be confused with any other value that could otherwise resemble a
node ID.

References #3088.
Merge pull request #143 from virtual-world-framework/branch/kernel-utilities

Kernel utility module.
Support property node references in `kernel.createChild`.

Support properties containing node references in `kernel.createChild`,
in addition to `kernel.setNode`. Node references are only valid during
replication, but properties of nodes created during replication are
assigned in `kernel.createChild` and not `kernel.setNode`.

Node references are property descriptors in the form:

    { properties: { p: { node: id } } }

This is in contrast with regular property values, which have descriptors
in the form:

    { properties: { p: { value: v } } }
Accept node references in `node.children.create` component descriptors.

References #3088.
Factor out `parametersKernelFromJS` and `parametersJSFromKernel`.

References #3088.
Clarify names that reference the proto-prototype node `node.vwf`.

Rename the `kernel/utility` items `nodeTypeURI` and `nodeTypeDescriptor`
to `protoNodeURI` and `protoNodeDescriptor`, respectively, to better
reflect that they refer to the proto-prototype node.

Rename the `model/javascript` internal variable `nodeNode` to
`protoNodeNode` so that it parallels the `protoNodeURI` name it derives
from and to hopefully clarify that it is the `model/javascript`
`...Node` data for the `protoNode...` node.

References #3088.
Merge pull request #144 from virtual-world-framework/branch/node-references

Node references
Support namespaced events to be used for node meta events.

Namespaced events will allow the kernel to use the normal event
listening/firing mechanism for meta events that are distinct from a
node's regular events.

Meta events will announce changes to a node, such as adding and removing
children, creating and deleting properties, methods and events, etc.

References #3094.