Correctly parse empty object

Signed-off-by: Casey Dahlin <casey.dahlin@gmail.com>
Don't overrun strings when building escaped string

string_escape was written on the rather silly assumption that N UTF-8 bytes =
N UTF-32 characters, so if there were multi-byte characters our character count
was off. We fix this by detecting the NULL terminator in the UTF-32 string just
as we would in the UTF-8 string.

Signed-off-by: Casey Dahlin <casey.dahlin@gmail.com>
A whole bunch of new print_object tests

Signed-off-by: Casey Dahlin <casey.dahlin@gmail.com>
Reset iterator index before refreshing current pointer

Signed-off-by: Casey Dahlin <casey.dahlin@gmail.com>
Many new iterator tests

Signed-off-by: Casey Dahlin <casey.dahlin@gmail.com>
Don't allow subspaces to be attached to empty names

Signed-off-by: Casey Dahlin <casey.dahlin@gmail.com>
Simplify subspace name search logic

Signed-off-by: Casey Dahlin <casey.dahlin@gmail.com>
Many new namespace tests

Signed-off-by: Casey Dahlin <casey.dahlin@gmail.com>