Introduce MergeFetchHeadNotFoundException

This adds a  strongly typed exception to indicate when a pull is
performed and a reference for the configured merge branch was not fetched.

Splitting out this commit from #839.

The main goal is that I would like an indication when the reference to merge with was not fetched during a pull (so I can provide a localized message, possible treat as an informational event rather than an error). This scenario can be hit when you pull from a branch where the upstream branch doesn't exist on the remote. The branch might never have been created (e.g. clone and then pull from a new / empty repository), or the upstream branch could have been deleted on the server.

Git for Windows will display an informational message when it encounters this scenario:

    Your configuration specifies to merge with the ref 'nonexistent' from the remote, but no such ref was fetched.

/cc @carlosmn @dahlbyk @nulltoken