Refactor into classes, fix and clean up tests

   Now have higher level abstraction classes like Nym, that
   still allow us to test the server with bad data.

   Also added error.py which easily lets us test for expected error
   conditions.

   Added multimethods to requirements.txt to support generic transfers,
   and also support error lib