Build a shared library and let the desktop-shell use it.

This allows to implement various plugins with different shells
sharing a common base. The plugin entry point is moved from shell.cpp
to desktop-shell.cpp