1150714 - delete all existing distribution_units before recreating

Distribution units have a unit key that contains the OS version, as read from
the treeinfo file.

When a new OS version comes out, a directory containing the most recent OS bits
will have a new treeinfo file with a different version and hence different unit
key. However, the old unit is not removed from the repo. This means there are
two distribution units for a single repo, which causes publish to fail.

This patch clears all existing distribution units before creating a new one.
This catches the case when the OS version in the treeinfo is bumped, and cases
when an older version of Pulp has already synced a second distribution unit
down and needs to tidy up the old one.
It's important to know that ``init_unit`` and ``save_unit`` are idempotent. So this code path is meant to be called both when there is no distribution at all, or when there is an existing one that's getting updated. It's a quirk of the "distribution" unit type, but we currently re-download all of its files every time because we didn't have a good way to know if it changed. (we have an RFE to improve that).

So the important thing to know is that I think this code block can execute when the distribution unit is not actually changing. The code you've added would cause it to be unassociated and then immediately re-associated.

I think it should only be removed if the existing unit has a different unit key than the new unit. That will avoid churn (and potential problems with that churn) in the (frequent) case where the distribution itself didn't actually change.