Refactored a bit, split IO into session and IO objects, added unit test lib (or the stub of one, anyways), added readme