'Open a WSDL at the specified I{url}.
First, the WSDL attempted to be retrieved from
the I{object cache}.  After unpickled from the cache, the
I{options} attribute is restored.
If not found, it is downloaded and instantiated using the
I{fn} constructor and added to the cache for the next open().
@param url: A WSDL url.
@type url: str.
@return: The WSDL object.
@rtype: I{Definitions}'

def open(self, url):

    cache = self.cache()
    id = self.mangle(url, 'wsdl')
    d = cache.get(id)
    if (d is None):
        d = self.fn(url, self.options)
        cache.put(id, d)
    else:
        d.options = self.options
        for imp in d.imports:
            imp.imported.options = self.options
    return d
