Moved token substitution logic to TokenResolver, changing UrlBuilder to use it instead of TokenResolver using a UrlBuilder.