Data input stream

While implementing ```DataInputStream``` (which is used by the library I want to run with Avian), I noticed a terrible mistake in the ```writeUTF``` method as I implemented it for the ```DataOutputStream```: since the ```readUTF``` and the ```writeUTF``` method are intended to be symmetric, the written characters actually have to be prefixed by the string length. This is fixed in the second commit.