Emit idle signal when lock is requested

Trigger idle sequence instead of calling fadeOut() directly.
It is much cleaner.

Issue: #78
Configure shell surfaces from DesktopShell instead of Shell

Such surfaces belongs to DesktopShell, not a generic Shell.
Refuse to lock if we already have a lock surface

This is safer but maybe a little paranoid - anyway it doesn't matter
whether we are explicitely locked or not, if there's a lock surface
we shouldn't start the lock sequence again.
Add lock surface to the layer if it's not yet mapped

This makes the lock surface visible when triggering the lock sequence
from the shell.

Issue: #78
Synchronize after unlock

Issue: #78
Don't reset layers other than current workspace's

Closes #78
Check layer before add shell or lock surface to it

This prevents bad things from happening.