Return exception string in place of throwing an exception

Big bunch of `AttributeError`s when renderer failed to be created that renders
vim unusable in case of some of the errors (e.g. invalid configuration) is
annoying.

Conflicts:
	powerline/__init__.py
Use `try/except KeyError` in place of `if in dict/else`
Pop path from self.loaded on exception
Replace self.pl.exception with self.exception

New function is checking for self.pl being set before using logger and also
removes the need of specifying explicit prefix="powerline".

Conflicts:
	powerline/__init__.py
Remove cache before running self.exception, not after
Fix Powerline.exception
Use fallback logger if normal one is not available
Do not double pl.exception() call, record used pl in variable instead
Support zsh “modes” (different keymaps like when using vicmd/viins pair)

Fixes #508
Some fixes for powerline.zsh:

- Replace main and other linked modes with modes they link to
- Add proper keymap initialization

Ref #508
Omit any non-vi* mode by default
Add tests
Modify appropriate theme
Merge pull request #709 from ZyX-I/zsh-vi-mode

Add support for modes to shell bindings
Add powerline: exception prefix
Merge pull request #706 from ZyX-I/better-errors

Better error handling