Refactored everything to use new classes; factored out from_api_row;

Partial re-factor, but this is good enough for a start.  next pull request will have as much of __init__ removed from the sub-classes as possible.
I missed this comment.  This is intentional as it's a first iteration.  I'm able to type again so I'm looking at this again.