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.

Setting `component = {}` wouldn't catch `node.children.create( "name", undefined, function() {} )`. That first section is just normalizing the argument list, so I don't want to interpret the values there.

It would work to handle the `undefined` in `componentKernelFromJS`, but I think that hides the fact that hides the fact that when the user says `node.children.create( name, undefined )`, or `node.children.create( name )`, we take that to mean `node.children.create( name, {} )`. That's part of the API that `model/javascript` presents to the application code, so I want to keep that decision at the interface between the application and the driver.

Doing it in one place as `component = component || {}` before the `if` would be better, but with both calls almost exactly the same and right next to each other, I don't think it's worth changing now.