mutt_ldap.py: Rename sys to _sys on import

Keeping the namespace clean when __name__ == '__main__' is not really
important, but this way all the imports are consistently renamed.
This future-proofs the code in case those modules ever need to get
shifted to module-wide imports.
mutt_ldap.py: Don't load the config file if were being imported as a library
mutt_ldap.py: Use LOG.error() instead of sys.stderr.write()
mutt_ldap.py: Also wrap stderr in a codecs writer

So Unicode log messages handled by StreamHandler will be properly
encoded.  In Python 2.7.3 (and probably other 2.x versions),
StreamHandler.emit() falls back on UTF-8 if stream.encoding is None.
With this change, it will use the configured output encoding instead
of guessing.
mutt_ldap.py: Factor configuration out into a Config class

This pulls a bunch of dynamic default calculation hackish encoding
manipulation out of the __name__ == '__main__' block, which makes it
easier to read.
README: Fix 'contaning' -> 'containing' typo in Usage
mutt_ldap.py: Follow the the XDG Base Directory Specification

Standards are good, especially standards for keeping a plethora of
config and data files files organized.  Use PyXDG (an optional new
dependency) to handle all of the specification logic.

The default config file is now ~/.config/mutt-ldap.cfg and the default
cache file is now ~/.cache/mutt-ldap.json.  The contents of these
files has not changed.  Without the PyXDG dependency, these defaults
are hard-coded.  With the PyXDG dependency, the defaults shift
depending on $XDG_CONFIG_HOME, $XDG_CACHE_HOME, etc.