Replace various __import__ calls with one Powerline.get_module_attr

Also makes some more errors non-fatal:
- Failure to import renderer class in case there is an existing renderer object
- Failure to import segment function
- Failure to import matcher function

One of the purposes: create a function that is able to collect all imported
modules to reload them (really purge out from `sys.modules` and let the python
do its job when reimporting powerline and recreating Powerline and other
objects).
Remove reference cycle

Switches from

    powerline ↔ get_module_attr (as a bound method it contains reference to
            │       ↑            self)
            └────> theme

to

            ┌────> pl, import_paths
            │       ↑
    powerline → get_module_attr
            │       ↑
            └────> theme

This is a separate commit because I am not sure whether it makes sense to bother
with this cycle.
Replace on_*_change callbacks with gen_loader_callbacks

Removes reference cycle
Add set_event argument to .shutdown() method
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.
Use `try/except KeyError` in place of `if in dict/else`
Pop path from self.loaded on exception
Add support for display option

Ref #418
Add mergedictcopies function
Implement configuration merging

Fixes #418

TODO:
- Specific tests.
- Better handling from powerline-lint side (it should no longer check separate
  files for themes and colorschemes).
- Better handling for marked values in powerline-lint when using merging.

Note: to be split into separate branch.
Special-case .copy() method

Still more fixes to add for powerline-lint
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".