split code into reasonable modules: binary parser, structures, logic.
add test case for issue #7.
add more thorough output to test for issue #7.
fix bug in computing filenames.

fix bug reported by Phill Moore where some path components might
be truncated. turns out the SHITEM_FILEITEM was parsing an offset
as a length, which was bad for long path components. fixes #7.