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```/```writeUTF``` methods are intended to be symmetric, the written characters actually have to be prefixed by the string length. This is fixed in the second commit.