Reload config in git_submodule_lookup() if not found

If the submodule config is already in memory, and we can’t find the
desired name in there, check back on disk for it. This is especially
important when diffing, since it’s possible that further changes could
have occurred since the configuration was reloaded.
diff --git a/src/submodule.c b/src/submodule.c
index 2388bd1..608242b 100644
--- a/src/submodule.c
+++ b/src/submodule.c
@@ -113,11 +113,17 @@
 
 	assert(repo && name);
 
-	if ((error = load_submodule_config(repo)) < 0)
+	if (repo->submodules) {
+		pos = git_strmap_lookup_index(repo->submodules, name);
+		if (git_strmap_valid_index(repo->submodules, pos)) {
+			goto found;
+		}
+	}
+
+	if ((error = git_submodule_reload_all(repo)) < 0)
 		return error;
 
 	pos = git_strmap_lookup_index(repo->submodules, name);
-
 	if (!git_strmap_valid_index(repo->submodules, pos)) {
 		error = GIT_ENOTFOUND;
 
@@ -141,6 +147,7 @@
 		return error;
 	}
 
+found:
 	if (sm_ptr)
 		*sm_ptr = git_strmap_value_at(repo->submodules, pos);