[Fix #1409, #1407, #1424, #1442]] Explicitly manage popwin
[Fix #1409, #1407, #1424, #1442]] Explicitly manage popwin

Set popwin:special-display-config to nil and let us manage it from
scratch. Doing so, we avoid popwin to mess up windows of some package
i.e. SLIME. Similar to how auto-completion layer is managed, if a layer
want to have popwin support, it must be explicitly specified in that
layer.

The default popwin:special-display-config contains obsolete config such
as anything (predecessor of Helm) and buffer that should be stick around
until we press C-g (like shell command output since we may need the
output for doing something else).

We don't need to use popwin:display-buffer since it can still mess up
window configuration, like this issue #1409. Simply add helm buffers to
display-buffer-alist, and use display-buffer-in-side-window; without any
argument, the default is bottom. We also inhibit Helm buffers to reuse
the existing windows with (inhibit-same-window . t) and a window
height (window-height . 0.4).

Also prevent popwin from piling up display-buffer-alist since everytime
it is reactivated, it adds its own buffers that already existed in
display-buffer-alist, by restoring display-buffer-alist after
popwin-mode is enabled again.

tsonntag/dotemacs,tsonntag/dotemacs,tsonntag/dotemacs,tsonntag/dotemacs