Refactored NBT code in preparation for TAG_List.

The refactoring had the added bonus of improving test coverage to
boot.  I was unable to completely refactor the code due to an
initialization loop error which I would like to fix.  There's also
something wrong with TAG_Byte -- it takes (and returns) []byte instead
of byte which I need to fix soon.  Other than that -- and all the
panics -- this is looking good!
Increased error checks.

Downside is that it's a few more untested lines of code since I'm not
going down every error branch.  Upside is that errors make it all the
way up, which I think is good.

Still haven't done list.