atomic node publish

Modify the publisher(s) and publishing flows to be atomic.  Basically, we just publish to a temp directory then, rename it in the end.  The concept of *commit* performs the renaming and clean up of the temp dir.  Making this a distinct step, provides opportunity to verify the publishing before committing it (potentially added later).