Make RESTful operations return 404 Not Found when the target resource does not exist.

In the original implementation, GET, DELETE and PUT operations on
non-existent resources used to return 500 but not 404.
I don't think it's impossible for storage.Create() to return a not found.  A few hypothetical scenarios

- we add a child relation resource that corresponds to another resource in the system.  Might be bad request, invalidation error, but might also be 404
- we add a parent relation resource (a project?) that may be deleted in between request and response.
- storage needs to read its write for some reason - another process goes and deletes the read while that happens (extremely unlikely).  Possibly it should return a 500 there

Probably better to add it rather than not.