site.hasExtension: working implementation & tests

Changes:
 1. self.siteinfo does not contain information on extensions -
    it only contains the 'general' section of the siteinfo
    query. Extensions are now stored as self._extensions.
 2. self.hasExtension returned an Exception if the server did
    not return loaded extensions. It now has a feature do define
    what the return value should be instead -- this is practical
    for 'must have extension' or 'must not have extension'
    scenarios, where a call
    if site.hasExtension('something', False):
        ... do something

    is much more practical than
    try:
        if site.hasExtension('something'):
	   ... do something
    except NotImplementedError:
        pass

 3. Added tests to test correct behavior. This depends on the Disambiguator
    extension being loaded on mysite (=enwiki).

Change-Id: Ic4f5157ae4d1c1b1f69e99a2340a95e231fb4b46
Merge "site.hasExtension: working implementation & tests"