nbformat v4

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.

closes #5074 

TODO in separate PRs:

- backport v4->v3 to 2.x
- what to do when uploading old notebooks (upgrade on upload, or leave alone and upgrade on open)?


- [x] add convert 3<->4
- [x] make v4 current
- [x] update stream messages to `name, text`
- [x] move display_data.png to display_data.data['image/png']
- [x] what's new
- [x] decide on UI for downgrade
- [x] upgrade existing example notebooks
No, I did what I meant to do, though I'll add comments and maybe clarify the code:

- `text` means it's stream output, which should be scrubbed
- `text/plain` is text in display_data, which should get the same treatment

I removed the logic to pop text when SVG is present, since it shouldn't actually be done.