Fix really bad error handling in git_smart__negotiate_fetch

This function is still really bad. But at least the error handling is better now.