Fix throw if no dpkg output

Expect a None input in some cases and don't raise; catch it
and return gracefully.
Factor out reasonable parts out of `mcv.pip`

We'll be making a remote-executable `mcv.remote.pip` that relies upon
this module.  This commit splits out some functionality so that it
can be shared with the remote module.
Fix verbosity of STDERR output in `mcv.connection`

Should only print if asked to.
Return remote cmd exit status, update `deploy`

This commit sets up `mcv.remote._exec_command`, which is just like
paramiko.SSHClient.exec_command, but it also returns the command's
exit status.

It then redoes the `mcv.remote` functionality in terms of this helper,
so it can pass the exit status out to callers.

It then updates the callers to expect getting the exit status.

In the course of all of these updates, this commit also redoes
`mcv.remote.deploy` in terms of the new functionality that's been
added, e.g. the better `execute()` and the fixed verbosity
conventions.
Don't throw in `mcv.user.exists` if doesn't exist

Prior to this commit `mcv.user.exists()` would throw if a user doesn't
exist.  This commit just makes it return False as you'd expect.