clean up handling of special types with opaque layouts
This makes it clearer which values have representations not reflected
in the usual nfields/sizeof model.
Also remove `length` fields from `String` and `SimpleVector`, since
they're misleading and will probably be removed in the future.