Handle composed characters correctly when shortening a string.
Use ObjC constants for value types instead of chars.
Fix some bad behavior when removing then re-adding the same object to a list.