* Site: api_query() -> _api_query(); api_query() acts as a wrapper for _api_query(), accepting API params as **kwargs.
* Various cleanup throughout and minor fixes.
* Exceptions: New PermissionsError; reworded docstring of SiteAPIError.
* Site: __init__() accepts an optional cookiejar parameter, otherwise we
use CookieJar(). Added five new cookie/username-related methods. Only
login from __init__() if we are missing valid login cookies and a user/
pass was provided. _login() and _logout() both try to save cookies via
_save_cookiejar(). _load_attributes() automatically refreshes all
attributes other than namespaces if at least one is missing, instead of
only the missing ones. api_query() raises SiteAPIError if either
self._base_url or self._script_path is missing. Removed some pointless
methods and renamed one; added domain().
* Functions: _get_site_object_from_dict() is cleaner, adds our cookiejar
to Site instances using _get_cookiejar() to load a LWPCookieJar() object
from the ".cookies" file in our project root. The same cookiejar is
returned for every site, enabling crosswiki login, via a global variable.
* User: Renamed some methods.
* .gitignore: Added .cookies file.
* Site: New _get_logged_in_user() method, name self-explanatory. This acts
as a replacement for the former crud in get_user(), which now calls this
when the username arg is None. This method will first try to determine
our username based on a special cookie in self._cookiejar (cookie.name is
self._name + "UserName", e.g. "enwikiUserName"), and will only do an API
query if no cookie was found. This removes an API query that is usually
only necessary if we are not logged in.
* Site: silly bugfix in __init__().
* User: Reverted earlier change to _get_attribute() (addition of
raise_exception arg); name() and exists() now use their own code, which
is simpler.
* User: Calling name() does not do an API query unless force=True, unlike
the other "get" methods.
* User: .join() instead of .format() because I feel it looks cleaner and is
probably more efficient.