[Reviewer: Alex] Release numbers on error

Pull request of the year, don't all cheer at once.

This handles errors from synchronous HTTP requests correctly, fixing https://github.com/Metaswitch/ellis/issues/49.

I've tested:
* Intentionally setting my Homestead hostname wrong, creating a number, and checking that it's removed from Ellis after Homestead creation fails
* Intentionally setting my Homestead hostname wrong, deleting a number, and checking that it's kept in Ellis after Homestead deletion fails
* Intentionally setting my Homer hostname wrong, creating a number, and checking that it's removed from Ellis after Homer creation fails
* Intentionally setting my Homer hostname wrong, deleting a number, and checking that it's kept in Ellis after Homer deletion fails
* Having a subscriber that's deleted from Homestead but not Ellis, and checking that the 404 to the DELETE response is treated as a success
* Running the live tests to verify that the standard create/delete/modify API calls still work

It's not pretty, but per previous discussions, more major surgery than this on Ellis probably isn't worth it.
Which way round is upstream and downstream. I believe that here upstream means "homestead", but further down you have a function called `on_downstream_deletion` which I assume also refers to homestead.