An expression represents a single macro. It has a type and a name that are used to lookup the substitute for the
macro. Currently, the substitute is either the list of ip addresses or the list of host names of the nodes that the
named service runs on. By default, the substitute is returned as a comma-separated list. The list separator can be
overridden by passing a different one to the constructor. Also, optionally each element in the substitute can be
formatted according to a format string. The actual element is inserted by replacing the $ in the format string. The
$ sign can be escaped by preceding it with another $.