Add a basic test suite

This was mainly added for testing `Either` `FromJSON` parsing with
`Data.Aeson`.
Refactor and fix bugs test suite now passes

It fixes a bug in the `User` fromJSON instance. This also bumps version
to 0.4.0.0.