mv stream.stream > stream.name in nbformat.v4

matches message spec
fix some validation bugs in v3

Python API had many inconsistencies with the actual spec
raise better ValidationError in validate

when oneOf would fail on a cell or output with an unhelpful error,
validate again against the target spec,
based on the output or cell type.
test and update conversion between v3 <-> v4