implement real streaming parsers for CLI input (json, xml)

The CLI tool crashes with *allocation failed* errors on large JSON
(and XML) files, because the current naiive implementation hits
several boundaries of maximum string/buffer lengths. see #17

This is fixed by implementing streaming parsers for the JSON and
XML inputs (JSONStream and htmlparser2 respectively).

Kudos to @vsivsi for reporting this and proposing this solution.

fixes #17.
iron out some nasty floating point rounding errors