Housekeeping: Rename "str" type to "Str".

Str is a better name for several reasons, and using the same name
will let us keep different projects in sync.

Also update Str and String_base.
Adopt String changes.

New hex() function, some bug fixes, new rep is 8B smaller on x86-64.
Adopt Json changes from other projects.

This Json is smaller (16B on x86-64) and directly stores objects
of other types (i.e., not Strings) and generally better.