Maintain a current list of clients in an application.

As each client joins an application instance, a node is created as a child of the "clients" node, which is parallel to the application root node.

Add a findClients kernel function, similar to the find function. Whereas the find function finds nodes descending from the application root node, the findClients function finds nodes descending from the clients node.

The Users tab of the editor shows a list of all clients in the application instance. A user can choose to login, which will add a displayName property to its client node. This can be seen by drilling down into that client in the editor.

Fixes #1951.
Fixes #1998.
Fixes #1275.