restapi: add an alternative CreateChange endpoint
In distributed installations, such as googlesource.com, different
tasks (running on different machines) are responsible for different
projects. This new API endpoint has the project name in the URL, so
load balancers can route requests to the task that has the data in
It might be more principled to add the whole /changes/ collection as a
child to /projects/ , but this is hard because the changes collection
is hard coded to be a a toplevel resource.
Every other REST operations on changes includes a change identifier
(eg. project~123), and can be routed based on that identifier.
This change was earlier submitted and then reverted as
I318603de0418e177f742684567867bf90571ac70, as it did not bring any speed
I am resurrecting this change, because it surfaces the project in the URL.
URLs are available more easily in logs than POST payloads, so this
endpoint improves debuggability of the service.