Don't reset the readline completer after each prompt

This makes it impossible to setup a custom completer. The comment says that
"we must ensure that our completer is back in place," but I don't see why. All
that does it make it impossible to use a different completer. One can trick
IPython into not doing this by monkeypatching ip.has_readline to False, but
then certain features like multiline editing are no longer enabled.

See https://github.com/davidhalter/jedi/pull/321.
Merge pull request #4353 from asmeurer/completion_no-reset

Don't reset the readline completer after each prompt
Merge pull request #4576 from ellisonbg/cell-spacing

Tighten up the vertical spacing on cells and make the padding of cells more consistent
Starting work on select/focus logic.
Adding new logic to cells.
More work on the dual mode UX.
Semi working version of basic dual mode UX.

As of this point there are lots of things that don't work, but
most of the basic dual mode interactions do work fine.
Don't bind notebook keyboard events to $(document).

Keyboard events were previously bound to $(document), which
caused problems with our command mode not allowing other
focused elements (dialogs, etc.) to manage their own keyboard
events. We now bind to the notebook element.
Binding to notebook div not document.
Removing manual focusing of notebook div.
Adding keyboard manager logic.

This is currently very broken.
Lots of updates and changes.

* Cleaning up the code mirror event handlers.
* Adding logic to prevent calling Notebook.command_mode on cell
  focusout.
* Fixing bugs.
Code comments and minor fixes.
Removing KBN null mode and replacing with enable/disable.
Adding missing enable/disable methods.