Add unit tests & some docs for the current implementation

All the setup needed to run the tests, like the development.txt file
as well as the configuration files for nose (setup.cfg) and for
coverage (.coveragerc).

Bugs fixed:

 * checkemail() will not return after an Exception without trying
   other servers anymore;
 * @memoize() now hashes both args & kwargs so it is now able to cache
   calls with different params;

Other Highlights:

 * Replaced all the `open()` calls with `io.open()`, it's easier to
   write tests with the `io` namespace;