yumpkg: refine pkg.hold/unhold

This brings these functions more in line with Salt design standards, in
that an error case raises an exception which can be caught elsewhere.
Returning different data types depending on success or error, and then
doing type checking later on, is not pythonic.
aptpkg: refine pkg.hold/unhold

This brings these functions more in line with Salt design standards, in
that an error case raises an exception which can be caught elsewhere.
Returning different data types depending on success or error, and then
doing type checking later on, is not pythonic.
Refine hold/unhold behavior in pkg.installed state

This adds exception handling to more gracefully report on problems
encountered while attempting to hold packages.
Remove yum-specific code

This is what happens when you copy and paste, and don't pay attention.
Add CommandExecutionError to exception handling

aptpkg's set_selections (called by hold/unhold) could potentially raise
this exception, so catch it as well.
aptpkg: Fix call to get_selections()

This was passing "hold" as a name, not a quoted string (which succeeded
since there is a function named "hold" in the module), causing the
retrieved selections to be empty, leading to a traceback when the
function later tries to run set_selections().
Merge pull request #13366 from terminalmage/refine-pkg-hold

Refine hold/unhold behavior in pkg.installed state