1105636 - saving a unit through a conduit now fails over to adding or updating

...if a unit appears or disappears unexpectedly.

https://bugzilla.redhat.com/show_bug.cgi?id=1105636

I'm not in love with this pattern of defining the ``_update_unit`` and ``_add_unit`` methods, but I think it is at least reasonable, and it avoids too much restructuring of code late in the 2.4 release cycle.

To summarize, I took the existing method, and I split the ``try`` and ``except`` blocks into their own methods, so they can each fail over to the other.
These unit tests could use assert_has_calls instead to make assertions about the parameters and not just the call count.