nbformat v4

(based on #6044)

Still quite a bit to do, but the implemented parts of v4 are working pretty well. I did find and fix some things while testing the validation. Both v3 and v4 have a Draft 4 jsonschema, and use the standard jsonschema format for references, so jsonpointer is no longer used.

TODO:

- [x] add convert 3<->4
- [x] make v4 current
- [ ] rename `notebook.cells` to `notebook.worksheet`
- [ ] decide what to do with stream output (`name,data` vs `stream,text`)
- [ ] backport v4->v3 to 2.x
- [ ] what's new
- [ ] what to do when uploading old notebooks (upgrade on upload, or leave alone, and upgrade on open)?
- [ ] decide on UI for downgrade
- [ ] upgrade existing example notebooks
Do we want this preprocessor to work with other kernels than Python? should probably use the kernespec stuff.