Add theme support; move l10n.py to i18n.py; rewrite i18n to support per-package translation file; alter all modules to use CallbackProxy on module variables.