API changes I'm working on

First, please don't actually merge this.  It's not actually ready yet, but I figured it was the easiest way to show you these changes and discuss them.

I've been working on a number of changes today that have amassed into a sizable amount of code.  They're broken down into logical chunks that should be easy to follow, but they all build on each other, so teasing them apart likely wouldn't be worth the effort.  

I'm not actually sure if you want to make this substantial of changes to the library, especially as it does have a number of breaking API changes.  But it also fixes a lot of things, provides [what I think is] a simpler API, and adds a ton of test coverage.  I just got WebFist working as well, but haven't finished the tests yet.  I'll probably be updating client.webfinger.net to use this later today so you can see it live there.