A cached implementation of DNSToSwitchMapping that takes an
raw DNSToSwitchMapping and stores the resolved network location in
a cache. The following calls to a resolved network location
will get its location from the cache.

resolve

Resolves a list of DNS-names/IP-addresses and returns back a list of
switch information (network paths). One-to-one correspondence must be
maintained between the elements in the lists.
Consider an element in the argument list - x.y.com. The switch information
that is returned must be a network path of the form /foo/rack,
where / is the root, and 'foo' is the switch where 'rack' is connected.
Note the hostname/ip-address is not part of the returned path.
The network topology of the cluster would determine the number of
components in the network path.

If a name cannot be resolved to a rack, the implementation
should return NetworkTopology.DEFAULT_RACK. This
is what the bundled implementations do, though it is not a formal requirement

Parameters:

names - the list of hosts to resolve (can be empty)

Returns:

list of resolved network paths.
If names is empty, the returned list is also empty