Feature/first unit tests

Here's the beginning of adding unit tests. There is still a good bit of work to do to improve coverage (currently 33.6% coverage by line).

Also, this PR depends on #2.
Can you explain this exception? Do you want to block implementation of the old I/O API ?