Improvements to kernel.js

- dispatch iopub handlers by msg_type
- add Kernel.send_shell_message public API
- use strict (and related fixes)
add Kernel-side widgets
add javascript-side widgets
document widget messages
fix js/Python WidgetManager symmetry

remove some log statements
make js / Python widgets symmetrical

don't enforce creation on Kernel side

also removed weak refs - premature optimization,
we can think about this later.
update widget message spec doc to reflect symmetry
fix Widget.primary
rename widget to comm
s/destroy/close
pass whole message to Comm handlers
COMM: mirror Python callback API in Javascript
zmqshell has handle on Kernel
add ZMQShell.set_parent

coalesces all `set_parent` calls into one method.
fixup kernel Any trait
hook up output for comm messages
publish busy/idle when handling widget messages
s/target/target_name
open is not an event

target callback receives comm and open message, not just comm.
add utils.always_new

wrapper allows passing constructors as callbacks, where `new` is required.