use blob names instead of hashes

We can't use content addressing with juju blob store,
as discussed ad nauseam online.

I don't see how this solves the problem of an endpoint wanting to access other attributes of the request not passed by the BulkIncludeHandler framework.

AFAICT this just adds a check for allowed methods, and the special case for PUT feels like too special at first sight (but perhaps I am wrong).

My impression is that we are adding code that will call us, instead of letting endpoint handlers decide what checks to perform, and how to modify their own arguments explicitly.
E.g. it would be good to have a generic:
func allowedMethods(handler http.Handler, methods ...string) http.Handler
or just
func allowedMethods(handler func(w http.ResponseWriter, r *http.Request), methods ...string) func(w http.ResponseWriter, r *http.Request)

As another example, for the expand-id endpoint we would need the unresolved Id, but (if I am not missing something) at the time the handler is called the id has been already resolved by the framework.
We would be forced to add another special case to the framework, and that doesn't feel optimal to me.

To be clear, this is more a request for discussion (and agreement on the direction we are following) than a request for actual changes. What do you think?