zmq.Kernel: turn user_{module,ns} into traitlets
embed_kernel: give a clear error message on pyzmq ImportError
embed_kernel: fix pyzmq version requirement error message
embed_kernel: pass [] to IPKernelApp.initialize to prevent argv parsing

https://github.com/ipython/ipython/pull/1357/files#r400153
Stop embed_kernel() from parsing sys.argv since to support being called from
a environments with their own command line args.
Major refactoring of saving, notification.

* Refactored the save widget so that the notebook doesn't depend
  on it.  Now the notebook emits events and the save widget
  observes those events.
* Created a new event system for all IPython events (events.js).
  We should start to use this to allow our classes to be loosely
  coupled.
* Created a new notification widget that should be used for all
  notifications. Uses new event system.
* Removed the kernel status widget.
* All kernel status message use new event/notification system.
* The print notebook view works again.
Fixing minor issues with nbformat.

* Test suite passes.
* nbformat put into a single location for easy update.
Fixing #1348 to allow Ctrl-M M to work w/o releasing Ctrl.
Fixing Shift-Enter bug in text cells.

Hitting Shift-Enter on an already rendered text cell should simply
move past it. It was causing the cell to enter edit mode. This
is not fixed.
Fixing #1359. We are not using itex mode in sympyprinting.

Previuosly we were using itex=True in the sympy latex printer.
I don't know why where were doing this but we should use regular
printing mode and put the $$ around the equations ourselves.
Fixing #1337. Tooltip stops TAB from being handled by others.

Pressing TAB to get the tooltip "range(TAB" was inserting a TAB.
To get rid of this we are now telling CodeMirror to ignore it
and also stopping the event from bubbling up the DOM.
fix hex_to_rgb() used to guess light/dark in qtconsole

previously used 'r' for all 3 values
token passed to format_lines must be unicode, not str

otherwise a TypeError is raised in str.translate, since
unicode.translate takes a dict, while str.translate takes a bytestring
protect Widget._style_sheet_changed from being called before _control exists

also ensure _control attributes start out as None, rather than undefined
adjust qtconsole color logic

* setting IPythonWidget.style_sheet is no longer clobbered by other
config or defaults.
* tabs other than the first get configured colors
Don't log complete contents of history replies, even in debug
Updating CodeMirror to c813c94 to fix #1344.
Making keyboard shortcut for showing line numbers consistent.
avoid jsonlib returning Decimal

The only functional change is that Decimal objects will no longer come out of jsonlib, but the code that handles jsonlib's two minor differences wrt other json libraries is now a bit clearer and better documented.

Relevant test is added.
Proper error handling for nbformat versions in client code.

1. Users are warned when an older nbformat notebook is converted.
2. The notebook notifies the user when a notebook that is too new
   is attempted to load.

To test these things, create a simple notebook. Then change its
nbformat field by hand to 2 (to test 1) and then 4 (to test 2).
Merge pull request #1362 from minrk/truncate_history_log

Don't log complete contents of history replies, even in debug

This changes the debug message to include only the length of the history reply, rather than its entire contents, which gets huge, and is an impediment to the legibility of debugging output.