Allow plugin to bind a different implementation of UrlFormatter

The UrlFormatter interface has a fixed binding to DefaultUrlFormatter
which means an alternative binding cannot be provided by a plugin.

Change it to a dynamic binding.

Change-Id: I37524564793b7dc4cf2ead2161bf180f6266c9ab
diff --git a/java/com/google/gerrit/server/config/DefaultUrlFormatter.java b/java/com/google/gerrit/server/config/DefaultUrlFormatter.java
index 70fb465..060ee3f 100644
--- a/java/com/google/gerrit/server/config/DefaultUrlFormatter.java
+++ b/java/com/google/gerrit/server/config/DefaultUrlFormatter.java
@@ -14,6 +14,7 @@
 
 package com.google.gerrit.server.config;
 
+import com.google.gerrit.extensions.registration.DynamicItem;
 import com.google.inject.AbstractModule;
 import com.google.inject.Inject;
 import com.google.inject.Provider;
@@ -27,7 +28,8 @@
   public static class Module extends AbstractModule {
     @Override
     protected void configure() {
-      bind(UrlFormatter.class).to(DefaultUrlFormatter.class);
+      DynamicItem.itemOf(binder(), UrlFormatter.class);
+      DynamicItem.bind(binder(), UrlFormatter.class).to(DefaultUrlFormatter.class);
     }
   }