A couple of changes

Two things I came across. 
- I made `@struct` work with types that have supertypes
- I added a convenience method to read/things with different endianness
- There was also a weird bug that made it randomly lose bytes. I removed the offending line, but I'm not sure what was intended as `skip` returns a boolean rather than an int. Could you have a look and see what that was actually supposed to do?