Refactor the `properties`, `methods` and `events` accessors, part 1.

In the accessor functions, accept `this` as either the
`node.{properties,methods,events}` collection object or the `node`.

References #3078.
Refactor the `properties`, `methods` and `events` accessors, part 2.

Extract the now-identical accessor creation code into functions (one
each for properties, methods and events).

References #3078.
Refactor the `properties`, `methods` and `events` accessors, part 3.

Formatting and comments.

References #3078.
A kernel utility module.
Refactor the `properties`, `methods` and `events` accessors, part 4.

Use the accessor creation functions for the behavior proxy.

References #3078.
Refactor the `properties`, `methods` and `events` accessors, part 5.

Change the `future` collection objects to refer back to the future proxy
using `node` instead of `future` to be compatible with the accessor
creation functions.

References #3078.
Refactor the `properties`, `methods` and `events` accessors, part 6.

Extend the accessor creation functions to support the `future` proxy and
use them on the `future` collection objects.

References #3078.
Merge branches 'branch/collection-refactor' and 'branch/kernel-utilities' into branch/node-references

References #3074.
Translate between kernel node proxies 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.