Simpler read api

I added some methods for easier traversal of a NBT tree. Its focus lies on reading compound and list structures with primitive values.

An excerpt of the new ReadWriteTest to see how it works:

```
TagCompound tag = (TagCompound)nbtInputStream.readTag();
Assert.assertEquals(4.2d, tag.getDouble("doubleTag"), 0.1);
Assert.assertArrayEquals(new int[] { 21, 42, 84 }, tag.getIntegerArray("integerArrayTag"));
Assert.assertArrayEquals(new String[] { "Hello", "World!" }, tag.getStringArray("listTag"));
TagCompound inner = tag.getCompound("compoundTag");
Assert.assertEquals("Bananrama", inner.getString("name"));
```
You may want to document all these methods. Even though it may be obvious what they do I'd prefer having all methods commented to simplify usage within IDEs for people who are not yet used to the methods (especially due to all the exceptions thrown). This applies to all added methods and classes within this PR.

However everything else looks fine. The addition makes sense.