Use abort() for error handling

This will make it easier to refactor common code when we implement the
data-set emptying endpoint.

Also modify exception handler to extract the description from the
HTTPError, rather than the name
Refactor the way POSTs are validated and handled

- split validation of data-set existence and authorization into two
  helpers
- rename _write_to_data_set to _append_to_data_set due to the fact that
  it's called by a POST, and we will implement a "set" (PUT) later.
- change signature of _append_to_data_set to take data as an argument,
  rather than the function extracting it from the global request object
  (side effect, meh)
Merge pull request #275 from alphagov/refactor-write-api-functions

Refactor write api functions
Capitalize HTTP verbs POST, DELETE
Add tests for PUT to data-set with empty JSON list

- To implement "clear the data-set" we're allowing the user to HTTP PUT
  an empty JSON list, which overwrites the contents of the data set.
- We currently *only* allow an empty JSON list - return an error
  otherwise.
Make behave tests use data group/type URLs

Rather than testing the /data-set-name endpoint (which is deprecated)
we're now testing using the /data/data-group/data-type endpoint.
Fix broken feature test definition
Implement PUT method for empty JSON list

To clear/empty a data-set, you PUT an empty JSON list to the data
endpoint (ie /data/my-data-group/my-data-type).

We currently only allow an empty list - in the future we could extend to
allow setting the entire contents of the data set.

https://www.pivotaltracker.com/story/show/69622004

[Delivers #69622004]
Merge pull request #276 from alphagov/http-put-to-empty-data-set

Implement PUT method for empty JSON list
Improve the delete collection test

Ensure that the data set was *actually* created successfully before
trying to delete it. This was to help us track down why collections
don't seem to be deleted successfully from Stagecraft:

https://www.pivotaltracker.com/story/show/70503022

[#70503022]
Merge pull request #277 from alphagov/improve-delete-test

Improve the delete collection test
Return the correct HTTP status

We should return 401 Unauthorized rather than 403 Forbidden.

Fixes #70590126.