charmstore/router: generate http.StatusNotFound appropriately

This generates messages (and error codes) as expected by the API specification.
Just curious: why defining ErrorCode from a string and not just using an error (or a errgo.Err)?