Refactor towards a more maintainable test suite

A few goals were in mind during the development of this branch:

 - Fix up the `pending` specs
 - Return more intuitive status codes from the controllers
 - Pass around hashes instead of JSON strings when possible
 - Allow for easier addition of new request specs
 - Make sure the end-to-end deployment request spec works
 - Improve the organization of spec helpers

I'm hoping that maintaining a healthy suite of specs will be easier with the changes in this PR.