Improvements to the publishing functionality:

* The client-side logic now prevents the publish button from
being clicked successively until the server responds with either
success or error by disabling it. Additionally, the an alert is
now shown client-side when publishing completes.

* While it is now impossible to send a request to redundantly
publish the same project from a client, on a public server it is
still possible for multiple different clients to attempt to
publish the same project at the same time. A locking list has
been added to prevent that scenario, and the second client will
display to the user a message informing them that the chosen
project is already in the process of being published.