Improve the messages printed when buck self-updates

Summary:

(1.) When the .buckversion file specifies a revision that is not present
in the current repository, print a message stating that Buck is fetching
updates.

(2.) When the git fetch fails, only display a "failed" message.  Move the
bit about how the user can disable the update into the informational
message that was already displayed as described in (1.).

(3.) If the revision specified in .buckversion does not exist on the
remote, either because it's plain wrong or because the revision is on a
remote that is not configured in the local repository, the git checkout
fails. Catch the exception and display a message rather than a Python
Traceback.

Test Plan:

Set .buckversion to a revision that does not exist. Run `buck clean` and
observe that it prints the message in (1.), then runs git fetch, and then
fails to check out the revision and fails with an error message.