Ok, now implemented in Pike 7.7:
typeof("");
(1) Result: string
_typeof("");
(2) Result: string(0)
_typeof("foobar");
(3) Result: string(8)
_typeof("\x2000");
(4) Result: string(16)
_typeof("\x200000");
(5) Result: string
_typeof("") <= _typeof("foo");
(6) Result: 1
_typeof("foo") <= _typeof("foo");
(7) Result: 1
_typeof("foo") <= _typeof("");
(8) Result: 0
Seems to work...
Now it's just a question of strengthening the types of various functions.