Re-enable Michel's improvements to ncm-accounts.

Revert "Merge pull request #8 from piojo/revert-ncm-accounts"

This reverts commit 760af4d31ebe8bb0b3989bd7d1979d0eba4b4236, reversing
changes made to 15bf89bf65f8186ac54448ffdfc0444526a4184d.
ncm-accounts: Fixes for existing unit tests to make them compatible with last changes
Add a test for a bug report from Andreas Nowack.

When there are no packages to install or remove, but new versions must
be installed, the component was doing nothing.
Ensure Yum always synchronizes with the remote distributions.

This ensures that operations that involve only version changes will
get executed, and the system will always be updated.
Add tests for a spare_dependencies method.

This method shall ensure that all packages to be removed are not
depended upon by anything in the system or in the transaction.
Mock spare_dependencies when testing update_pkgs
Add a spare_dependencies method.

This method ensures we don't try to remove anything that is depended
upon by anything that will be installed next.
Clean up caches and lock packages early.

We need to have package versions locked down before we can reliably
decide what to remove, or what dependencies to spare.
Ensure only packages that are not depended by anything else are removed
Run to spare dependencies iff there are packages to install or to remove.
Remove the tests for when wanted_pkgs fails.

This method cannot fail (it's a leaf method, only operates in memory,
blah blah blah).  Previous successes were due to a bug in the test
itself, and relied on some other part remembering it should fail.
Enhance how we clean up the call counters.

Return values are cleared up too.  So that we **really** can identify
who causes the exit with error.
Fix typo.
Cover all conditions in spare_dependencies
Remove misleading comment
Ensure update_pkgs calls spare_dependencies and handles its errors
Remove the semicolons in the set elements
Use the standard header.
Use Readonly hashes for the login.defs mappings.
Fix bugs in the handling of special lines.

There was a mismatch between _shadow_special_lines and
_shadow_special_lines_ . The new code is simpler, too.

Tests are adjusted to reveal the proper handling of these new fields.