* Got rid of ConfigError from exceptions.py.
* Try to load config ourselves if it isn't already, via the new _load_config()
method of Site. It uses getpass if passwords are encrypted, as done by
earwigbot.py.
* Cleaned up UserNotFoundError in user.py and exceptions.py.
tools.get_site() returns an actual Site object, thanks to tools.functions._get_site_object_from_dict().
Site objects now have a working (but primitive) .api_query(), .get_page(), .get_category(), and .get_user().
Page objects now have a working .get(), for getting page content from the API.
Category is now a subclass of Page, and has its own .get_members(), which returns a list of titles.
Still need to implement proper namespace logic in pages.