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