APISite.siteinfo automatically fetches the results

This changes it from a dict to a Wrapper which automatically
queries the result if they aren't cached. It is basically merging
APISite._add_siteinfo, APISite._getsiteinfo and APISite.siteinfo.

It'll always caches the result of the siprop "general", because
otherwise it would be unable to determine if a requested property
is in fact a property of "general" (e.g. APISite.case()).

It also supports the "in" operator which tells you if the value is
cached. Setting it from the outside is not possible anymore.

If a property isn't supported (e.g. 'restrictions' before 1.23) it
will cache either an empty dummy object (which acts like an empty
string/iterable/dict) or a specific default constant.

Change-Id: Ib5b6d84f0baf60376cdc25bc715d346c1579da1f
Merge "APISite.siteinfo automatically fetches the results"