Handle surrogate pairs during scanning (dart-lang/yaml#159) Change back to readChar() whenever possible; remove the need to decode the surrogate for further checking