Plasma Widget + reorganization

  -- factor out the shell widget into a separate file
  -- create the basic infrastructure for the plasma widget
  -- cleanup (some) imports
Implement remote timeouted calls.

  -- make completion timeout if no response is received from
     the interpretter within 1 sec.
Prevent breakage when disconnecting signals while emitting them.

  -- this is done by postponing the disconnect/connect operation
     after the emitting is done
Restart the shell if interrupt is taking too long.