[#4] Used SPL classes for file I/O and dropped adapter abstraction.

SPL can use any underlying stream wrapper so there is no need to abstract it on higher level.