Back to old method

window-configuration is frame dependant so it is not very usefull when
using emacs as a server and starting several clients.

data format:
desktop:
(frame-size window-list selected-window)

frame-size:
(w h)

window-list:
(window0 window1 ...)
window0 = minibuffer

window:
(buffer window-edges)

selected window:
(xmin ymin)

Split algorithm:

1] Split block until there is only one window:
      split vertically
      if no split found, split horizontally
      goto 1] for each new block

Split vertically:
      y = yblock-min + 1
      while y < yblock-max
            find window at (xblock-min, y) => window-current
            total-width = window-current.width
            for all windows in block => w
                if w != window-current and w.ymax == window-current.ymax
                   total-width += w.width
            if total-width == block-width
                split and return the 2 new blocks
            else
                y += window-current.height
      return nil

split horizontally:
same as algo as vertical split.
Only update desktop if frame is "known" or if user ask to
Desktop list operational

RET = goto desktop
D = delete desktop
Document functions
Use lambda functions for virtual-desktops-list-keymap

Add also C-c C-d u shortcut for desktop update