2769: implement DELETE.

The DeleteHandler method implements DELETE requests for Keep, checking
that the user is authorized to issue DELETE and then deleting the
requested block from local volumes.

* CanDelete checks that the user with the given token is authorized to
  delete blocks from Keep.
* MockVolume and UnixVolume objects provide a Delete method for deleting
  a block from that volume.
* TestDeleteHandler tests:
** Unauthenticated requests
** Requests from a non-admin user
** Requests from a non-admin user for a nonexistent block
** Requests from a non-admin user for an existing block
2769: code review comments

* Updated TODO in handler_test.go.
* Log DELETE requests in DeleteHandler.

Refs #2769
2769: code review comments

* DeleteHandler returns http.StatusNotFound when no blocks could be found at all,
  and http.StatusMethodNotAllowed when all delete attempts
  fail (e.g. read-only volumes)

* Unit test cleanup: "http://localhost:25107" is not actually necessary
  to build a http.Request, and it is confusing, so leave it out.

Refs #2769.
2769: more code review comments

* Abandon HTTP 405, return HTTP 200 whenever any blocks were found at
  all

* Return a JSON message only with HTTP 200 (404 implies
  copies_deleted=0, copies_failed=0)

* More clarity in unit tests

Refs #2769
Merge branch '2769-keep-delete-request'

Refs #2769.