Split into multiple modules to allow usage without Scalaz dependency. / Resolves #9