Suppress warning about JSON_ERROR_UTF8

JSON_ERROR_UTF8 is handled in the following code by base64-encoding the invalid
value and retrying json_encode.
Added memory debugging
Split JsonFile into JsonStreamFile and JsonWholeFile

These differ in how they parse an exported JSON file: JsonStreamFile
will use a streaming parser to prevent having to parse the whole file
into memory at once.

At the same time, we add tests around the 'read' functionality of files,
and change the contract to be readObject() rather than readObjects() (to
support streaming formats)
Drop stdClass type-hinting
Declare $reader property
Write to file expects an array, not an actual stdClass
Don't forget to flush and close the cleared property file!
Test __serialized functionality too
Don't allow backslashes in test file name
Throw exception on failed unserialization
Better type handling in JsonStreamFile
Only use stream parser for large, existing JSON files
Better memory debugging
Improved debugging formatting
Use newline concatenated JSON strategy