Get Config for a request from the GitilesAccess

Allow for per-repo configuration by reading config values on each
request rather than in servlet constructors. Reading a single config
value is cheap enough, but parsing configs from the on-disk format is
potentially expensive; leave this optimization up to the
GitilesAccess implementation.

Currently, in DefaultAccess, we just pass in the global config, no
per-repo config. This is simple expediency because Config objects
don't trivially support merging multiple configs except by
"inheritance".

Because of the way we were caching per-config maps of extension to
ArchiveFormat, this requires some more substantial refactoring to
that class and ArchiveServlet.

Change-Id: Ia1fcf97ecc71571537402629f49e8a65128a105e
diff --git a/gitiles-servlet/src/test/java/com/google/gitiles/TestGitilesAccess.java b/gitiles-servlet/src/test/java/com/google/gitiles/TestGitilesAccess.java
index a511d40..50877ba 100644
--- a/gitiles-servlet/src/test/java/com/google/gitiles/TestGitilesAccess.java
+++ b/gitiles-servlet/src/test/java/com/google/gitiles/TestGitilesAccess.java
@@ -16,15 +16,16 @@
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
+import com.google.common.collect.ImmutableMap;
+
+import org.eclipse.jgit.internal.storage.dfs.DfsRepository;
+import org.eclipse.jgit.lib.Config;
+
 import java.util.Map;
 import java.util.Set;
 
 import javax.servlet.http.HttpServletRequest;
 
-import org.eclipse.jgit.internal.storage.dfs.DfsRepository;
-
-import com.google.common.collect.ImmutableMap;
-
 /** Gitiles access for testing. */
 public class TestGitilesAccess implements GitilesAccess.Factory {
   private final DfsRepository repo;
@@ -65,6 +66,11 @@
         d.cloneUrl = TestGitilesUrls.URLS.getBaseGitUrl(req) + "/" + d.name;
         return d;
       }
+
+      @Override
+      public Config getConfig() {
+        return new Config();
+      }
     };
   }
 }