File IO abstraction

File IO module to hopefully abstract File IO eventually. I'll add commits individually - may be squelched later