State/Reader/Writer updates (see details)

 * Split up Reader/Writer/State into separate modules
 * More tests
 * Better compatibility with MTL users