Miscellaneous fixes

These are a few miscellaneous kernel and javascript driver changes that came out of working with VWF on other projects. They are mostly independent of each other and the preceding changes. But there is one merge conflict, so they're stacked on top of branch/find-trees so that we don't risk a merge error later.

@eric79 please review.

I see right now that if `componentKernelFromJS` is passed an `undefined` value, it will return `undefined` is that the default behavior that you want?  Since in both places you call it, you actually want it to return a transformed empty object, I expected that that was the default behavior you wanted in the face of an undefined value.

If not, then I might suggest that above the conditional you do:

    component = component || {};

once rather than repeating it in both calls.  You might change:

    component = undefined;

to:

    component = {};

as well, since that's what you really want it to be.