read: change error message
read: allow the Object to be passed in to readObject()

Gonna be needed for readECMAArray()
read: remove console.error(), add assert() calls
read: refactor readECMAArray() to use readObject() internally

This is more "correct" since the `count` given at the beginning of the arrays
can't be used when reading out the array data, since that number may or may not
include the "named" keys in the array.

TODO: add a test case for this
read: implement "strict array" type support