desc: add root-desc-html and repo.desc-html

These are optional, default-empty raw html strings that
are emitted after the corresponding text-only versions
root-desc and repo.desc when they are used in the header
area.

This provides a flexible way to place buttons or links
in the header region for both the repo index page and
for repos individually.

The existing root-desc and repo.desc keep their original
meaning as a shortish text-only repo description.  The
reason for that is the description is also used in places
like the repo list, where any decoration is not wanted.

Where root-desc and repo.desc are used in the header region, also
emit their html counterparts afterwards if they are defined.

Where root-desc are repo.desc are used outside the header,
eg in the repo list, leave it as it is without adding any
related html.

It's possible to not define the text repo.desc and just define
the repo.desc-html counterpart; only the html part is shown
then.  But results in the repo list page will then vary according
to what's in the html (text size, pictures etc).

Signed-off-by: Andy Green <andy@warmcat.com>
diff --git a/ui-shared.c b/ui-shared.c
index e1ff349..f519860 100644
--- a/ui-shared.c
+++ b/ui-shared.c
@@ -1028,12 +1028,19 @@
 
 	html("<tr><td class='sub'>");
 	if (ctx.repo) {
-		html_txt(ctx.repo->desc);
+		if (ctx.repo->desc &&
+		    (ctx.repo->desc != cgit_default_repo_desc ||
+		     !ctx.repo->desc_html))
+			html_txt(ctx.repo->desc);
+		if (ctx.repo->desc_html)
+			html(ctx.repo->desc_html);
 		html("</td><td class='sub right'>");
 		html_txt(ctx.repo->owner);
 	} else {
 		if (ctx.cfg.root_desc)
 			html_txt(ctx.cfg.root_desc);
+		if (ctx.cfg.root_desc_html)
+			html(ctx.cfg.root_desc_html);
 	}
 	html("</td></tr></table>\n");
 }