removed try catch finally block from GitClient.fetch() so it no longer catches errors that should (probably) be handled by code using the GitClient

created a function in HttpGitClient _http_request() which correctly
handles exceptions thrown by http errors such as 404 and 500.

In HttpGitClient modified _discover_references() and _smart_request() to
use the new _http_request() function, removing code that is common to both
functions.

Signed-off-by: Jelmer Vernooij <jelmer@samba.org>