Creating new base/js/keyboard.js
Adding utility functions.
Adding basic tests for keyboard.js
Fixing references to IPython.keycodes.
Removing old keyboard handling from IPython.utils.
Addressing things in completer.js.
Merge pull request #5076 from ellisonbg/keyboard

Refactor keyboard handling
Merge pull request #5267 from minrk/normalize-paths

normalize unicode in notebook API tests
Adding security.js with 1st attempt at is_safe.
Don't render insecure Markdown and show warning.
Display safe HTML+SVG even if untrusted, but don't set trusted=1.
Adding first round of security tests of is_safe.
use google-caja for sanitization
always sanitize markdown

don't check if it's safe or not
move security js test
add cmp_tree, in case caja log can't be trusted

(spoiler: it can't)
use html-sanitizer instead of html-css

always scrub css (for now)
wrap caja.sanitizeAttribs to trust data-* attributes
check trust of data-attributes in sanitization
trust latex

If mathjax is insecure, we have big problems.
And we already trust mathjax in markdown cells,
so this is consistent.