* 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.
Adding .DS_Store to .gitignore (pesky OS X)
Adding a is_config_loaded() function to core/config.py
Some cleanup in core/config.py: doc clarification, misc fixes...