COOPR-496 add links to the cluster template that can point to

various useful service UIs. Services and cluster templates have
a links field that consists of an array of links, where a link
is a label and a url. The url can contain macros. When a cluster
is fetched from the rest api, links in the cluster template are
expanded and placed at the top level of the returned object.
In addition, for every node in the cluster, the links for all
services on the node are taken, expanded, and combined into a list
of links for the node.
new TypeToken<Set<Link>>() {}.getType() can be a constant.