Use String state instead of Array[Byte]

Though unspecified on the JVM, using string will do O(1) sharing instead
of O(n) copying. This is just a very easy way to get sharing working.

We can also use `linesR` instead of chunking - this will work much
better since tokens almost never cross lines in practice.