Fix error checking

SIGNIFICANTLY stricter than before!
If ANYTHING goes wrong, it exits. Should help prevent infinite loops and misconfigured apt-gets.
If an error occurs during a simulated upgrade, nothing is echoed, since it wouldn't get to the user anyway.