I/O refactoring
- Address thoughts in #7
-- Templated Read/Write methods aren't possible because of the virtual methods in the IStream base class
- Remove DetermineAndDoEndianSwap methods in favor of one templated EndianSwap() method