implement proper str_proto.substring
coupla notes/cleanup
handle string offset overflow by truncation (this seems correct since offset is always truncated to string length, and string length cannot be longer than size_t)
implement str_proto.substr