Add publishing API intent endpoints

Provides #put_intent and #destroy_intent, plus test helpers.
I'm not sure the bang variant is the correct choice for the destroy call.  This will return a 404 if no intent exists, which would raise an exception.  Using the non-bang method (`delete_json`) would return `nil` instead.