nbformat validation

backport some nbformat cleanup from #6045, mainly to do with validation

- [x] use Draft 4 JSON schema for validation (no longer need jsonpointer)
- [x] deprecate unused `format` arg in `nbformat.current.read/write`
- [x] support downgrading notebooks with nbconvert
- [x] inform users of invalid notebooks
- [x] fix various inconsistencies in v3 Python API, which didn't create valid notebook elements
- [x] make sure it doesn't try to save `cell.trusted`