BUG: fix json segfaults
closes #11473
closes #10778
closes #11299
- [x] tests added / passed
- [x] vbench / asv ok
- [x] windows tests pass
- [x] valgrind clean
- [x] passes `git diff upstream/master | flake8 --diff`
- [x] whatsnew entry

This fixes several potential segfaults in the json code:
- time objects were freed and potentially garbage collected before their data had been read #11473. Was also segfaulting if an exception was raised during conversion (e.g. when using dateutil timezones).
- 0d arrays were not being handled corectly (needed `goto INVALID`) #11299
- all blocks were assumed to be ndarrays #10778 

Fixing #10778 means non-ndarray blocks are now supported (although I think at present `category` is the only one?).

Not tested on windows yet. Seeing some unrelated travis failures on my fork (msgpack), is that normal?
