Markdown: Gracefully handle [...] as broken ref link node

Change-Id: I4e7072faeba39918213dfcef3e940e5c12e2a880
diff --git a/gitiles-servlet/src/main/java/com/google/gitiles/doc/MarkdownToHtml.java b/gitiles-servlet/src/main/java/com/google/gitiles/doc/MarkdownToHtml.java
index dd73ee4..a9d19df 100644
--- a/gitiles-servlet/src/main/java/com/google/gitiles/doc/MarkdownToHtml.java
+++ b/gitiles-servlet/src/main/java/com/google/gitiles/doc/MarkdownToHtml.java
@@ -291,7 +291,9 @@
       html.close("a");
     } else {
       // Treat a broken RefLink as plain text.
+      html.appendAndEscape("[");
       visitChildren(node);
+      html.appendAndEscape("]");
     }
   }
 
diff --git a/gitiles-servlet/src/main/java/com/google/gitiles/doc/ReferenceMap.java b/gitiles-servlet/src/main/java/com/google/gitiles/doc/ReferenceMap.java
index 4a58ea2..34800a8 100644
--- a/gitiles-servlet/src/main/java/com/google/gitiles/doc/ReferenceMap.java
+++ b/gitiles-servlet/src/main/java/com/google/gitiles/doc/ReferenceMap.java
@@ -35,6 +35,9 @@
 
   ReferenceNode get(SuperNode keyNode, String text) {
     String id = keyNode != null ? getInnerText(keyNode) : text;
+    if (id == null || id.isEmpty()) {
+      return null;
+    }
     return references.get(key(id));
   }