Only hash strings of less than 80 characters

NSData hash only seems to care about 80 characters anyway...
Better escape code handling

Adds real surrogate pair handling. Before if we got a surrogate pair we'd handle the first unichar and second unichars separately - resulting in missed characters. This could be a real problem with emojis and other utf16 surrogate pairs. Now we handle surrogate pairs properly - doing our own utf16->utf8 decoding. We no longer round trip into NSString - this should speed up decoding of all escape code heavy strings.

Lots more unit tests and test data.