Refactor json_unpack()
Refactor json_unpack()

* Use the format string scanner from the previous commit (with the
  simpler separator skipping semantics)

* Split json_vnunpack() to three separate functions for unpacking
  objects, arrays and "simple" values

* Always return 0 on success, 1 on error

This shaves around 100 more lines from the original implementation.

rogerz/jansson,firepick1/jansson,wirebirdlabs/featherweight-jansson,janetuk/jansson,Vorne/jansson,akheron/jansson-debian,wirebirdlabs/featherweight-jansson,akheron/jansson,yahoo/ygloo-external-jansson,rogerz/jansson,gameclosure/jansson,yahoo/ygloo-external-jansson,simonfojtu/FireSight,slackner/jansson,chrullrich/jansson,slackner/jansson,attie/jansson,firepick1/jansson,simonfojtu/FireSight,markalanj/jansson,akheron/jansson,Mephistophiles/jansson,firepick-delta/FireSight,Mephistophiles/jansson,firepick1/jansson,yahoo/ygloo-external-jansson,akheron/jansson,OlehKulykov/jansson,liu3tao/jansson,gameclosure/jansson,janetuk/jansson,AmesianX/jansson,AmesianX/jansson,janetuk/jansson,markalanj/jansson,firepick1/FireSight,akheron/jansson-debian,bstarynk/jansson,firepick1/FireSight,janetuk/jansson,rogerz/jansson,npmccallum/jansson,npmccallum/jansson,firepick-delta/FireSight,attie/jansson,Vorne/jansson,akheron/jansson-debian,rogerz/jansson,firepick-delta/FireSight,liu3tao/jansson,akheron/jansson-debian,bstarynk/jansson,markalanj/jansson,firepick1/FireSight,bstarynk/jansson,OlehKulykov/jansson,simonfojtu/FireSight,gameclosure/jansson,chrullrich/jansson,yahoo/ygloo-external-jansson