[Reviewer: Matt] Changes needed for Server-Assignment-Request support

The main groups of changes are:

* Update the HttpConnection and XML parsing to allow sending a PUT to Homestead to update the registration state, and to get the current registration state (as well as the HSS User-Data) back on the response
* Update the code that checks whether the user is registered, retrieves iFCs, or handles deregistrations to use this method, including some tweaks to have the IMPI, IMPU and HSSConnection in hand at the right point
* Update the UTs to cope with this (including adding a new URL-factory method to FakeHSSConnection so that we aren't hardcoding URLs in every test).

I've run through enough of my test plan to be confident that my code is sound, but I'll do one more pass of the test plan once I've applied any markups you have.

Note that this doesn't include any code to trigger deregistration in the case of authentication timeout. I'll make a separate pull request once I implement that feature.