Add StringIO

This is WIP. Curious to know if I'm moving in the right direction.

TODO

- [ ] fix API
- [ ] write docs