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 (to be added later).

To support this, the published data needed to be modified slightly.  And for the better.  A leftover from the prototype was to inject the full download URL into each unit as it was published.  In this PR, I modified this to add the base URL in the manifest and *not* add the URL in each unit.  Instead, the importer (child node) will derive the full URL by joining the base-url and the relative path.  This relies on an intuitive publishing convention (base_url + relative_path = URL) but provides for more flexibility.  Eg: suppport for: https://fedorahosted.org/pulp/wiki/AlternateRepoSource.