Your svg definitions have two *nested* <svg>...</svg> elements. You have:
<svg ...>
<a>
<svg ...>
...
</svg>
</a>
</svg>
and
<svg ...>
<$link ...>
<svg ...>
...
</svg>
</$link>
</svg>
If you remove the outer <svg></svg> pair, the $link widget and the <a> element work as expected (i.e., creates a link to a tiddler or an href, respectively). It seems the the only thing the outer <svg> element adds is width="100%" height="100%", but you should be able to simply move those attributes to the inner <svg> so the image will appear the same size as before.
enjoy,
-e
Eric Shulman
TiddlyTools / ELS Design Studios
InsideTiddlyWiki: The Missing Manuals